node.js - 如何修复错误:SQLITE_CANTOPEN:无法在 Zeit.co 上打开数据库?
问题描述
我想连接到我的数据库,它是 sqlite3。这在本地主机上工作正常,但当我部署到 zeit.co 时出现错误:
Error: SQLITE_CANTOPEN: unable to open database
据我了解,这个问题是因为我们无法获得数据库文件的正确路径。我尝试了一些解决方案,但仍然失败。请帮忙!!!
这是 zeit.co 日志上的错误:
errno":14,"stack":["Error: SQLITE_CANTOPEN: 无法打开数据库文件"]}},"stack":["Runtime.UnhandledPromiseRejection: Error: 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)"," 在超时。
这是我连接到 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');
解决方案
对于那些从谷歌那里跌跌撞撞的人来说,Zeit 现在是 Vercel,并且有一个在无服务器环境中使用 MySQL 的更新示例。
https://github.com/vercel/next.js/tree/canary/examples/with-mysql
推荐阅读
- android - 如何在 Splashscreen API 中删除我的启动画面图标周围的圆形遮罩?
- java - 通过 jpackage 打包找不到或加载主类
- c - C:在动态分配的内存中插入比初始化更多的元素
- html - 在卡片引导程序中保持相同的内容高度
- php - 让 PHP 路由库与 Azure 应用服务一起使用?
- vuejs2 - 在 vue.js 中自定义 Vuetify 深色主题背景的背景(不是 Nuxt!)
- javascript - 如何解决 VSC 错误“ENOENT:没有这样的文件或目录”?
- python - Tkinter - 如何动态调整渐变帧的大小?
- excel - Excel VBA 2016 / 365 兼容性问题?
- javascript - javascript:如何使 youtube 上的所有链接在新标签页中打开