【发布时间】:2021-06-29 13:51:36
【问题描述】:
我有一个带有 Postgres 数据库的 Node / Express 应用程序,可以在我的本地机器上完美运行,但我很难让它在 Heroku 上运行。问题发生在我推送到成功构建的 Heroku 之后,然后我尝试运行 heroku run sequelize db:migrate。错误是:
ERROR: self signed certificate
我的设置:
- 节点 v15.12.0
- Postgres 数据库(“Heroku Postgres”插件)
- pg v8.5.1
- 续集 v6.6.2
- sequelize-cli v6.2.0
我的 Sequelize 连接参数:
{
"development": {
"username": "XXXXXX",
"password": "XXXXXX",
"database": "party_playlist",
"host": "127.0.0.1",
"dialect": "postgres"
},
"production": {
"use_env_variable": "DATABASE_URL",
"dialect": "postgres",
"dialectOptions": {
"ssl": {
"require": "true",
"rejectUnauthorized": "false"
}
}
}
}
许多帖子都谈到了这个问题(GitHub:1 | 2 | 3,StackOverflow:1 | 2 | 3),大多数都指向 pg v8 作为问题;但是,没有一个推荐的解决方案对我有用。
到目前为止我已经尝试过:
- 将
rejectUnauthorized: false添加到我的 Sequelize 连接参数中 - 在 dialectOptions 之外的配置中添加
ssl:true - 将
NODE_TLS_REJECT_UNAUTHORIZED=0添加到我的 Heroku 环境变量中 - 将
PGSSLMODE=no-verify添加到我的 Heroku 环境变量中 - 打开/关闭 Heroku 的
Automatic Certificate Management功能 - 回滚到 pg v7(各种颠覆)
1-5 没有效果,回滚到 pg v7 会破坏应用程序(在本地,任何尝试对数据库的读/写操作都会挂起,没有错误消息;在 heroku 上,db:migrate 命令运行时没有错误消息,但数据库没有更新)。我假设 pg v7 与我的 Node 版本或我的项目中的某些其他包版本不兼容,但我不知道如何找出兼容的版本集,而不是通过反复试验,这是不可行的。另外,顺便说一句,这是一个爱好项目,所以我不担心 MITM 攻击。
有趣的是,当我运行heroku pg:psql时,我能够很好地连接到我的 Heroku 数据库!
有什么办法可以解决这个问题吗?任何和所有的帮助将不胜感激!
【问题讨论】:
标签: node.js postgresql heroku sequelize.js