我不断收到此错误:
Error: self signed certificate
在终端中运行此命令时:
knex migrate:latest --env production
我的knexfile.js
require('dotenv').config();
module.exports = {
development: {
client: "pg",
connection: {
host: "localhost",
database: "my-movies"
}
},
production: {
client: "pg",
connection: process.env.DATABASE_URL
}
};
我的.env文件:
DATABASE_URL=<my_database_url>?ssl=true
Heroku应用信息:
Addons: heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos:
Git URL: https://git.heroku.com/path-name.git
Owner: xxxxxxxxx@xxxx.com
Region: us
Repo Size: 0 B
Slug Size: 0 B
Stack: heroku-18
Web URL: https://my-appname.herokuapp.com/
我尝试将键值对放在ssl的knexfile中的生产中:true,并且遇到相同的错误。我过去很多次都这样做过,而且从未遇到过这个问题。想知道Heroku是否进行了任何更改,但是在搜索文档时我什么都找不到。
答案 0 :(得分:13)
knexfile.js
处的以下配置对我有用。
...
production: {
client: 'postgresql',
connection: {
connectionString: process.env.DATABASE_URL,
ssl: { rejectUnauthorized: false }
}
}
...
其中 DATABASE_URL
是您通过运行 heroku config --yourAppName
获得的内容
答案 1 :(得分:3)
ssl: { rejectUnauthorized: false }
pg 配置目前对我也不起作用..但我通过 heroku docs
设置以下配置变量:
heroku config:set PGSSLMODE=no-verify
答案 2 :(得分:0)
这是由于pg @ ^ 8(2020/02/25)cf. this heroku help forum。
您可以获得full pg@^8 announcement,但相关段落如下:
现在,我们将对tls.connect使用默认的ssl选项,其中包括启用了rejectUnauthorized的功能。这意味着,如果您使用的是自签名证书,则连接尝试可能会失败。
似乎heroku在某处使用自签名证书。
可能的解决方案:
ssl: { rejectUnauthorized: false }
(请参见上面的公告)