node.js - 启动新的 Sequelize 后端并且无法连接到 SQLite DB
问题描述
我有一个新的 app.js 的最基本的骨架,在节点中设置了 sequelize 和 express。每当我运行项目时,我都会得到:
{ Error: SQLITE_CANTOPEN: unable to open database file errno: 14, code: 'SQLITE_CANTOPEN' }
根据我发现的其他帖子,我已经四处寻找解决方案,但我没有使用其他技术,如电子似乎会导致问题。我也尝试过将我的 database.sqlite3 从根目录移动到它自己的文件夹中的建议,但这并没有帮助。
我的 app.js 看起来仍然像样板。我真的没有做太多,只是在创建模型并使用 sequelize-cli 迁移后尝试测试连接。
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
//Database Connection
const db = require('./config/database');
const Sequelize = require("sequelize");
const sequelize = new Sequelize({
dialect: "sqlite",
storage: "path/to/database.sqlite"
});
//Test the DB Connection
sequelize.authenticate()
.then(() => console.log('Database Connected'))
.catch(err => console.log('Error: ', err))
//Server
const app = express()
app.get('/', (req, res) => res.send('HELLO WORLD'))
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server started on ${PORT}`));
我的 config.json 如下,我确实仔细检查了路径。
{
"development": {
"dialect": "sqlite",
"storage": "./db/database.sqlite3"
},
"test": {
"dialect": "sqlite",
"storage": ":memory"
},
"production": {
"dialect": "sqlite",
"storage": "./db/database.sqlite3"
}
}
解决方案
看起来您的文件中仍有样板代码。具体来说,看看这些行:
const sequelize = new Sequelize({
dialect: "sqlite",
storage: "path/to/database.sqlite"
});
看起来您没有使用配置文件;相反,您正试图在path/to/database.sqlite3
.
试试这个:
const sequelize = new Sequelize(db[process.env.NODE_ENV]);
(我假设您要加载与当前环境对应的数据库配置)。
推荐阅读
- reactjs - 使用扩展运算符(或类似运算符)从单个 mixin 传递所有属性
- python - MongoClient(host=['localhost:PORT'], document_class=dict, tz_aware=False, connect=True)
- javascript - 如何用 JavaScript 输出 HTML 表格的行值?
- oauth-2.0 - RBAC - 范围或自定义声明
- google-app-engine - GAE 上的 Firestore 身份验证是否需要多个服务?
- r - R-Project 以纯文本形式向我发送了未加密的密码
- dummy-variable - 在处理数据集中的多个分类特征时,多个虚拟变量是否应该从不同的数字开始?
- ios - 是否有必要在旋转时更新 TableView 布局?
- firebase - 为什么在传递多个字段时在firebase中创建新文档时只设置一个字段?
- react-native - 如何使用 wix 的 react-native-navigation popTo()?