NodeJS SQLite3数据库不是构造函数

fquxozlt  于 2023-04-11  发布在  Node.js
关注(0)|答案(1)|浏览(129)

因此,在我的项目中,我试图从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,不仅如此,但建议的答案试图连接到托管数据库,而我的是本地的。

bfnvny8b

bfnvny8b1#

加载模块时的详细方法导致了问题。

const sqlite = require('sqlite3').verbose();

尝试暂时将其从require中删除,您的代码应该可以正常运行。如果您遇到此问题,请尝试将verbose添加到单个数据库代码语句中,而不是将其与模块一起加载。

相关问题