启动新的Sequelize后端并且无法连接到SQLite DB

时间:2019-04-24 17:56:00

标签: node.js sqlite sequelize.js sequelize-cli

我拥有一个新的app.js的最基本的骨骼,它在节点中设置了sequelize和expression。每当我运行项目时,我都会得到:

{ 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"
  }
}

1 个答案:

答案 0 :(得分:1)

文件中似乎仍然有样板代码。具体来说,请看以下几行:

const sequelize = new Sequelize({
  dialect: "sqlite",
  storage: "path/to/database.sqlite"
});

您似乎没有使用配置文件;相反,您尝试打开path/to/database.sqlite3上的数据库文件。

尝试以下方法:

const sequelize = new Sequelize(db[process.env.NODE_ENV]);

(假设您要加载与当前环境相对应的数据库配置)。