"Self signed certificate" Heroku 运行续集 db:migrate 上的错误



我有一个带有Postgres数据库的Node/Express应用程序,它在我的本地机器上运行得很好,但我很难在Heroku上启动和运行它。当我尝试运行heroku run sequelize db:migrate时,问题发生在我成功构建的Heroku之后。错误为:

ERROR: self signed certificate

我的设置:

  • 节点v15.12.0
  • Postgres数据库("Heroku Postgres"插件(
  • 第8.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是问题的根源;然而,没有一个推荐的解决方案对我有效。

到目前为止,我已经尝试过:

  1. rejectUnauthorized: false添加到我的Sequelize连接参数
  2. ssl:true添加到dialectOptions之外的配置中
  3. NODE_TLS_REJECT_UNAUTHORIZED=0添加到我的Heroku环境变量
  4. PGSSLMODE=no-verify添加到我的Heroku环境变量
  5. 切换Heroku的Automatic Certificate Management功能打开/关闭
  6. 回滚到pg v7(各种子版本(

1-5没有效果,回滚到pg v7会中断应用程序(在本地,任何对数据库的读取/写入尝试都会挂起,没有错误消息;在heroku上,db:migrate命令运行时没有错误消息,但数据库不会更新(。我认为pg v7与我的Node版本或我项目中的其他包版本不兼容,但我不知道如何通过反复试验来确定兼容的版本集,这是不可行的。此外,顺便说一句,这是一个业余项目,所以我不担心MITM攻击。

有趣的是,当我运行heroku pg:psql时,我可以很好地连接到我的Heroku数据库!

你知道我该怎么修这个吗?任何帮助都将不胜感激!

我在这里看到了你的问题,那里接受的答案对我来说很有效。我观察到我们有相同版本的pg和sequelize,但节点的版本不同。我在v14.8.0上。我建议您使用nvm切换到该版本,然后再试一次,因为我观察到奇数(如13,15(的节点版本经常会出现问题(不过我的观察可能是错误的(。

这:

"ssl": {
"require": "true",
"rejectUnauthorized": "false"
}

应该是这样的:

"ssl": {
"rejectUnauthorized": false
}

注意布尔值周围的引号。

愚蠢的错误,但我会把这个抛在一边,以防有一天其他人也犯同样的错误。

最新更新