Мое приложение express.js работает на Heroku Dyno.Я создал некоторые конечные точки api rest для грубых операций (связанных с heroku-postgres db) и проверил, что они работают с Postman.
Мои проблемы начались после того, как я попытался включить миграции.Я просто младшийdev, пожалуйста, дайте мне знать, если я исследую мертвые отведения и какую другую информацию нужно предоставить для правильной диагностики этих сообщений об ошибках.
Запуск миграции с sequelize model:create --name tableName --attributes ...
прошел нормально.
При запуске sequelize db:migrate
, ошибка, которую я получаю:
ERROR: Dialect needs to be explicitly supplied as of v4.0.0
Мой текущий config.json
равен
{
"production": {
"use_env_variable": "DATABASE_URL",
"dialect": "postgres",
"dialectOptions": {
"ssl": {
"require": true
}
},
"ssl": true
}
}
, и я также указал диалект в models/index.js
(это было сгенерировано вместе с config.json
в команде sequelize model:create...
)
require('dotenv').config();
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = 'production' || process.env.NODE_ENV;
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
const sequelize = new Sequelize(process.env.DATABASE_URL, {
logging: false,
dialect: "postgres",
dialectOptions: {
ssl: true,
}
});
// let sequelize;
// if (config.use_env_variable) {
// sequelize = new Sequelize(process.env[config.use_env_variable], config);
// } else {
// sequelize = new Sequelize(config.database, config.username, config.password, config);
// }
Если const sequelize = ...
закомментирован и вместо него используется let sequelize; ...
, возникает та же ошибка диалекта.
Интересно, что когда я устанавливаю переменную оболочки export NODE_ENV=production
, возникает новая ошибка - ERROR: Error parsing url: undefined
.
Это меня более озадачивает, так как я думал, что она уже определена в строке const env = ...
вindex.js
.
Итак, я попытался указать url в команде миграции - sequelize db:migrate --url 'postgres://username:password@localhost/test1'
.
Этот предоставленный мной URL работал для тестирования CRUD через Postman, а также черезинтерфейс для сбора данных формы.
Теперь ошибка ERROR: connect ECONNREFUSED 127.0.0.1:5432
.Я не уверен, как поступить с этого момента, и не уверен, что шаги, которые я предпринял после ошибки диалекта, являются правильными способами исправить эти проблемы.
Мои вопросы действительно являются причиной этих ошибок.
1) Где еще мне нужно указать диалект?
2) Почему ошибка диалекта исчезает, когда я export NODE_ENV
, даже если среда уже указана в index.js
?
3) Аналогично для URL, почему не будет принят URL из моего .env
, введенного с require('dotenv').config()
?