[英]Sequelize migration in Heroku Postgres: Chain of errors
我的express.js應用程序在heroku dyno上。 我為Crud操作(連接到heroku-postgres db)創建了一些rest api端點,並檢查它們是否與Postman一起使用。
在嘗試合並遷移后,我的問題就開始了。 我只是一個小。 開發人員,所以請讓我知道我是否正在調查無用的線索以及提供哪些其他信息以正確診斷這些錯誤消息。
使用sequelize model:create --name tableName --attributes ...
開始遷移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
sequelize model:create...
指定了方言(這是在sequelize model:create...
命令中與config.json
一起生成的)
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; ...
而是使用let sequelize; ...
,發生相同的方言錯誤。
有趣的是,當我設置外殼變量export NODE_ENV=production
,發生了新錯誤export NODE_ENV=production
ERROR: Error parsing url: undefined
時ERROR: Error parsing url: undefined
。
這讓我感到困惑,因為我認為它已經在index.js
的const env = ...
行中定義了。
所以然后我嘗試在遷移命令中指定url- sequelize db:migrate --url 'postgres://username:password@localhost/test1'
。
我提供的該URL通過Postman以及通過收集表單數據的前端用於CRUD測試。
現在錯誤是ERROR: connect ECONNREFUSED 127.0.0.1:5432
。 我不確定如何從這一點着手,也不確定由於方言錯誤而采取的步驟是否是解決這些問題的正確方法。
我的問題確實是這些錯誤的原因。
1)我還需要在哪里指定方言?
2)為什么即使在index.js
已經指定了環境, export NODE_ENV
時方言錯誤export NODE_ENV
?
3)同樣對於URL,為什么不接受我require('dotenv').config()
帶入的.env
URL?
使用sequelize-cli生成遷移和模型文件非常好。 我已將這些更改推送到heroku,但正在本地運行遷移命令。 (我沒有本地dev數據庫,我唯一的環境是生產環境)。
另一個問題是,當heroku run bash
時, heroku run bash
只能以應用程序狀態的快照形式運行。 這意味着即使我可以很好地創建,編輯和推送,遷移命令也將“卡在”舊版本上,直到bash重新啟動為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.