我正在学习this教程,我们正在使用next.js创建一个应用程序。我们正在使用sqlite,并测试数据库。在教程中,我们编写了以下'database-test.js'文件:
const sqlite = require('sqlite');
async function setup() {
const db = await sqlite.open('./mydb.sqlite');
await db.migrate({force: 'last'});
const people = await db.all('SELECT * FROM person');
console.log('ALL PEOPLE', JSON.stringify(people, null, 2));
const vehicles = await db.all('SELECT * FROM vehicle');
console.log('ALL VEHICLES', JSON.stringify(vehicles, null, 2));
}
setup();
当我使用$node database-test.js时,我得到以下错误:
(node:26446) UnhandledPromiseRejectionWarning: Error: sqlite: filename cannot be null / undefined
我真的不明白为什么我们要打开一个.sqlite文件,而不是一个.db文件。我已经确保我有正确的路径到.sqlite文件。这个错误的原因是什么,我如何修复它?我似乎找不到任何其他文档或例子的.open函数。
4条答案
按热度按时间r8uurelv1#
正如@ANimator120所提到的,但有一些调整。使用require,因为它在服务器端运行。通过npm i sqlite3安装sqlite3。然后添加路径到您的迁移文件夹,如果它不在项目根目录中。
一切都很好,至少对我来说。
mzsu5hc02#
你需要npm安装sqlite和sqlite3使用open()方法的正确方法是。
jk9hmnmh3#
结果他们在教程中使用的是sqlite3.0.3。对于sqlite3,在这种情况下使用open()的正确方法是:
shstlldc4#
1.首先使用
npm i --save sqlite3
终端命令安装sqlite31.在JS文件中写下这段代码而不是你的代码
但当执行此命令行
const people = await db.all('SELECT * FROM Person'); console.log("ALL PEOPLE", JSON.stringify(people, null, 2));
它显示我的错误,表的人不存在,这就是为什么我从迁移文件中删除DROP TABLE Person;