我有一个带有 Postgres 数据库的 Node / Express 应用程序,可以在我的本地机器上完美运行,但我正在努力让它在 Heroku 上启动和运行。问题发生在我推送到 Heroku(成功构建)之后,然后我尝试运行 heroku run sequelize db:migrate
。错误是:
ERROR: self signed certificate
{
"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 连接参数ssl:true
添加到 dialectOptions 之外的配置NODE_TLS_REJECT_UNAUTHORIZED=0
添加到我的 Heroku 环境变量PGSSLMODE=no-verify
添加到我的 Heroku 环境变量Automatic Certificate Management
功能1-5 无效,并且回滚到 pg v7 会破坏应用程序(在本地,任何对数据库的读取/写入尝试都挂起且没有错误消息;在 heroku 上,db:migrate 命令运行时没有错误消息,但数据库没有更新)。我假设 pg v7 与我的 Node 版本或我的项目中的其他一些包版本不兼容,但我不知道如何通过反复试验来确定兼容版本集是什么,这是不可行的。另外,顺便提一下,这是一个业余项目,所以我不担心 MITM 攻击。
有趣的是,当我运行 heroku pg:psql
时,我能够很好地连接到我的 Heroku 数据库!
有什么想法可以解决这个问题吗?任何和所有的帮助将不胜感激!
答案 0 :(得分:1)
我从 here 看到您的问题,那里接受的答案对我有用。我观察到我们有相同版本的 pg 和 sequelize 但不同版本的 node。我在 v14.8.0 上。我建议您使用 nvm 切换到该版本并重试,因为我观察到具有奇数的节点版本(如 13,15)经常会出现问题(不过我的观察可能是错误的)。
答案 1 :(得分:0)
这个:
$ awk -F'>antisense_|:' '/^ *>antisense_/ {gsub("-", ".", $2); print}' file
>antisense_tadA::NC_009089.1:19643-19848(-)
>antisense_recR::NC_009089.1:22931-23105(+)
>antisense_16s_rRNA::NC_009089.1:25279-26010(-)
tRNA.Leu_tRNA.Met NC_009089.1 30389-30422(+)
tRNA.Arg_tRNA.Gly_tRNA.Asp_tRNA.Val NC_009089.1 30559-31181(-)
$ awk 'BEGIN {OFS=FS="/antisense/|:"} {gsub("-", ".", $2)} 1' file
>-::NC_009089.1:17609-17804(+)
ATTAAATAGAAAAAATGAATTTAATATAAAAAATTAAAGAAAATTCTAAAAAAAAAAAGATAAGGTCTTA
>antisense_tadA::NC_009089.1:19643-19848(-)
TTTATAAAAATATTTAGTGTTTTTTTTAAATTAGTTCTAAAATAATTTTTAGATATTCATACAAGAGTGT
>-::NC_009089.1:20139-20394(-)
GCTGTTTTTCTATATATGAATTTTGCTACTTTTACATTATTATTATTAAAATAATCTAATTTAAACTCAT
>antisense_recR::NC_009089.1:22931-23105(+)
TCATCTATAATCGCTTTAGATAAAGCTTCCACATCATTAGTATTCATATTAATAATATGAAAAGCCAATC
>antisense_16s_rRNA::NC_009089.1:25279-26010(-)
CTCTATTTTCCTTTTTATTCTATATTTAAATTTTTTATTTACAAGAATATTTTTAATATAACATATTATG
>antisense_tRNA-Leu_tRNA-Met::NC_009089.1:30389-30422(+)
TTTACATAGAGTTAACACTCTAAAAACTGCACA
>antisense_tRNA-Arg_tRNA-Gly_tRNA-Asp_tRNA-Val::NC_009089.1:30559-31181(-)
CTTAACTTCTGTGTTCGGAATGGGAACAGGTGTATCCTCTTTCCCACCAAGTACCATCAGCGCTAAAGAG
$ awk 'BEGIN {OFS=FS="antisense|:"} {gsub("-", ".", $2)} 1' file
>-::NC_009089.1:17609-17804(+)
ATTAAATAGAAAAAATGAATTTAATATAAAAAATTAAAGAAAATTCTAAAAAAAAAAAGATAAGGTCTTA
>antisense_tadA::NC_009089.1:19643-19848(-)
TTTATAAAAATATTTAGTGTTTTTTTTAAATTAGTTCTAAAATAATTTTTAGATATTCATACAAGAGTGT
>-::NC_009089.1:20139-20394(-)
GCTGTTTTTCTATATATGAATTTTGCTACTTTTACATTATTATTATTAAAATAATCTAATTTAAACTCAT
>antisense_recR::NC_009089.1:22931-23105(+)
TCATCTATAATCGCTTTAGATAAAGCTTCCACATCATTAGTATTCATATTAATAATATGAAAAGCCAATC
>antisense_16s_rRNA::NC_009089.1:25279-26010(-)
CTCTATTTTCCTTTTTATTCTATATTTAAATTTTTTATTTACAAGAATATTTTTAATATAACATATTATG
>antisense|:_tRNA.Leu_tRNA.Metantisense|:antisense|:NC_009089.1antisense|:30389-30422(+)
TTTACATAGAGTTAACACTCTAAAAACTGCACA
>antisense|:_tRNA.Arg_tRNA.Gly_tRNA.Asp_tRNA.Valantisense|:antisense|:NC_009089.1antisense|:30559-31181(-)
CTTAACTTCTGTGTTCGGAATGGGAACAGGTGTATCCTCTTTCCCACCAAGTACCATCAGCGCTAAAGAG
应该是这样的:
"ssl": {
"require": "true",
"rejectUnauthorized": "false"
}
注意布尔值周围的引号。
愚蠢的错误,但我会留下这个,以防其他人有一天犯同样的错误。