Начиная новый бэкэнд Sequelize и не может подключиться к БД SQLite - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть самые основные кости нового app.js, настроенного с помощью sequelize и express in node.Всякий раз, когда я запускаю проект, я получаю:

{ 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 Ответ

1 голос
/ 24 апреля 2019

Похоже, у вас все еще есть стандартный код в вашем файле. В частности, посмотрите на эти строки:

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

Не похоже, что вы используете файл конфигурации; вместо этого вы пытаетесь открыть файл базы данных на path/to/database.sqlite3.

Попробуйте вместо этого:

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

(я предполагаю, что вы хотите загрузить конфигурацию базы данных, соответствующую текущей среде).

...