因此,在我的项目中,我试图从discord中收集简单的Discord用户名和唯一标识符,并将其存储在SQLite数据库文件中。我得到错误:let userDB = new sqlite.Database('./disco.db',sqlite.OPEN_READWRITE);^ TypeError:sqlite.数据库不是构造函数
下面是我的index.js中的代码
// Requirements
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require('fs');
const ServList = client.guilds.cache.size;
const sqlite = require('sqlite3').verbose();
require('dotenv').config()
//client login function
client.login(process.env.TOKEN);
// Start up Check list
client.once('ready', () => {
//Log and Set Status
console.log('Bot Online');
client.user.setActivity(`Proudly in ${client.guilds.cache.size} servers`, {
type: "WATCHING",
}, 60000);
//Database Initialization
let userDB = new sqlite.Database('./disco.db', sqlite.OPEN_READWRITE | sqlite.OPEN_CREATE);
});
下面是创建错误的命令的代码:
const Discord = require('discord.js');
const sqlite = require('sqlite3').verbose();
module.exports = {
name: 'create',
description: "Create your account!",
use(message, args, client, sqlite){
// Data to Add
let userDB = new sqlite.Database('./disco.db', sqlite.OPEN_READWRITE);
userDB.run(`CREATE TABLE IF NOT EXIST usersInfo(userID INTEGER NOT NULL, uNameR TEXT NOT NULL)`);
let userID = message.author.id;
let uName = message.author.tag;
let uQuery = `SELECT * FROM usersInfo WHERE userID = ?`;
userDB.get(uQuery, [userID], (err, row) => {
if (err) {
console.log(err);
return;
}
if (row === undefined){
userDB.prepare(`INSERT INTO usersInfo VALUES(?,?)`);
insertdata.run('userID, uName');
insertdata.finalize();
userDB.close();
} else {
let userID2 = row.userID;
let yName = row.uNameR;
console.log(yName, userID);
}
});
message.channel.send('success');
}
}
编辑:您的问题可能与另一个问题重复。如果其中的答案无法解决您的问题,请编辑以详细解释您的问题中唯一的部分。
建议的解决方案对我不起作用,因为建议的答案使用mySQL,而我使用SQLite3,不仅如此,但建议的答案试图连接到托管数据库,而我的是本地的。
1条答案
按热度按时间bfnvny8b1#
加载模块时的详细方法导致了问题。
尝试暂时将其从require中删除,您的代码应该可以正常运行。如果您遇到此问题,请尝试将verbose添加到单个数据库代码语句中,而不是将其与模块一起加载。