簡體   English   中英

繼承Heroku Postgres中的遷移:錯誤鏈

[英]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: undefinedERROR: Error parsing url: undefined

這讓我感到困惑,因為我認為它已經在index.jsconst 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM