我在通过Node的Glitch实例连接到Postgres Heroku爱好dyno时遇到问题。我浏览了类似问题的帖子,但仍然找不到解决方案。我尝试在节点PGSSLMODE="require"
中设置环境变量
并运行下面的代码,但我总是遇到相同的错误。谢谢
const pg = require('pg')
const { Client } = require('pg');
pg.defaults.ssl = true
const client = new pg.Client({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
client.connect();
UnhandledPromiseRejectionWarning: Error: self signed certificate at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
答案 0 :(得分:0)
您不能将其设置为ssl:true
,因为这意味着您正在自行分配自己的证书。由于您使用的是Heroku自己的PostgreSQL数据库,因此您已经具有SSL证书。您需要做的就是确定是否需要或禁用它。
const client = new Client({
connectionString: process.env.DATABASE_URL,
sslmode: process.env.NODE_ENV === "production" ? "require" : "disable"
})
我想指出的是,您不必添加sslmode,因为默认情况下它需要ssl证书,但为了安全起见,请添加sslmode。