Я пытаюсь работать с реляционной базой данных (sqlite) в качестве постоянного уровня бэкэнда Express / Apollo. Моя очень базовая c структура проекта выглядит так, как показано на скриншоте.
Я успешно сгенерировал модель, запустил миграцию и даже посеял БД, но по какой-то причине я сталкиваюсь с Unhandled rejection SequelizeConnectionError: SQLITE_CANTOPEN: unable to open database file
ошибка при запуске приложения. Что дает?
Ниже приведены фрагменты кода.
Конфигурация приложения
import { ApolloServer } from 'apollo-server-express';
import express from 'express';
import typeDefs from './schemas';
import resolvers from './resolvers';
import models from './models';
const apollo = new ApolloServer({
typeDefs,
resolvers,
async context({ req }) {
return {
req,
models,
};
},
// ...
});
const app = express();
apollo.applyMiddleware({ app });
export default app;
Конфигурация сервера
import http from 'http';
import app from './app';
import db from './models';
const port = 4000;
db.sequelize.sync({ force: true }).then(() => {
console.log("Re-syncing db");
});
http.createServer(app).listen(port, () => {
console.log(`Server listening on port ${port}`);
});
Конфигурация Sequelize
{
"development": {
"dialect": "sqlite",
"storage": "./db/devdb.sqlite3"
},
"test": {
"dialect": "sqlite",
"storage": ":memory"
},
"production": {
"dialect": "sqlite",
"storage": "./db/proddb.sqlite3"
}
}
Структура проекта