首页 > 解决方案 > 如何修复错误: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
    }
});

笔记:

  1. 我试过了const DBSOURCE = 'mydb.sqlite'
  2. 我努力了const DBSOURCE = path.resolve(__dirname, 'mydb.sqlite');

标签: node.jsreactjssqlitenext.jsvercel

解决方案


对于那些从谷歌那里跌跌撞撞的人来说,Zeit 现在是 Vercel,并且有一个在无服务器环境中使用 MySQL 的更新示例。

https://github.com/vercel/next.js/tree/canary/examples/with-mysql


推荐阅读