【发布时间】:2020-05-28 21:01:22
【问题描述】:
我想连接到我的数据库,它是 sqlite3。这在 localhost 上运行良好,但当我部署到 zeit.co 时出现错误:
Error: SQLITE_CANTOPEN: unable to open database
据我了解,这个问题是因为我们无法获得数据库文件的正确路径。我尝试了一些解决方案,但仍然失败。请帮忙!!!
这是 zeit.co 日志上的错误:
2020-02-13T07:50:40.031Z 4d5a9aed-ae26-4a09-903a-72aa08ca5140 错误未处理的承诺拒绝 {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"错误: SQLITE_CANTOPEN:无法打开数据库 文件","原因":{"errorType":"错误","errorMessage":"SQLITE_CANTOPEN: 无法打开数据库 文件","代码":"SQLITE_CANTOPEN","errno":14,"stack":["错误: SQLITE_CANTOPEN:无法打开数据库 文件"]},"promise":{"isFulfilled":false,"isRejected":true,"rejectionReason":{"errorType":"Error","errorMessage":"SQLITE_CANTOPEN: 无法打开数据库 文件","代码":"SQLITE_CANTOPEN","errno":14,"stack":["错误: SQLITE_CANTOPEN:无法打开数据库 文件"]}},"堆栈":["Runtime.UnhandledPromiseRejection: 错误: SQLITE_CANTOPEN: 无法打开数据库文件"," 在 过程。 (/var/runtime/index.js:35:15)"," 在 process.emit (events.js:228:7)"," 在 eventToObjectGenerator.promiseCreated (/var/task/node_modules/bluebird/js/release/debuggability.js:258:33)"," 在 activeFireEvent (/var/task/node_modules/bluebird/js/release/debuggability.js:301:44)"," 在 fireRejectionEvent (/var/task/node_modules/bluebird/js/release/debuggability.js:703:14)"," 在 Promise._notifyUnhandledRejection (/var/task/node_modules/bluebird/js/release/debuggability.js:90:9)"," 在 Timeout.unhandledRejectionCheck [as _onTimeout] (/var/task/node_modules/bluebird/js/release/debuggability.js:39:25)"," 在 listOnTimeout (internal/timers.js:531:17)"," 在 processTimers (internal/timers.js:475:7)"]} 发生未知的应用程序错误
这是我连接到 sqlite 的代码
const fs = require('fs');
const path = require('path');
const DBSOURCE = path.join(__dirname, 'mydb.sqlite');
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: DBSOURCE
}
});
注意:
- 我试过
const DBSOURCE = 'mydb.sqlite'; - 我试过
const DBSOURCE = path.resolve(__dirname, 'mydb.sqlite');
【问题讨论】:
标签: node.js reactjs sqlite next.js vercel