jos*_*308 17 postgresql heroku node.js
我正在按照 Heroku 的node.js 教程来配置 Postgres 数据库。创建一个简单的表并连接到 localhost:5000/db 后,我收到一条错误消息“错误:服务器不支持 SSL 连接”。
我一直在寻找解决方案几个小时,但似乎无法解决它。对你的帮助表示感谢。谢谢!
JBa*_*s35 11
这是 Heroku 在 2021 年今天工作的新形式,他们在连接方面做了一些小修正。
const pool = (() => {
if (process.env.NODE_ENV !== 'production') {
return new Pool({
connectionString: process.env.DATABASE_URL,
ssl: false
});
} else {
return new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
}
});
} })();
Run Code Online (Sandbox Code Playgroud)
他们做了一些改变,使用这种方式你可以保持本地和 Heroku 可用。
在这里,我提供了该问题的解决方法,而不是本文的标题。对整个帖子的更好回答可能是解决为本地机器配置 SSL 的问题。
我到达这里是为了解决完成问题中提到的 Heroku 教程并设置 Postgres 数据库以在本地和远程工作的问题。
const pool = new Pool({
connectionString: process.env.DATABASE_URL || 'postgresql://postgres:<your admin password>@localhost:5432/<your db name>',
ssl: process.env.DATABASE_URL ? true : false
})
Run Code Online (Sandbox Code Playgroud)
我的想法是在我部署的应用程序上使用 SSL,但在本地计算机上完全避开 SSL。通过简单地跳过本地机器上的 SSL 配置,我能够集中精力开发一个仍然使用 Heroku 内置 SSL 的工作应用程序。
我使用 Heroku 环境变量来检测他们的环境与我自己的环境,并在上面的代码示例中相应地选择值。对我来说,这在本地和远程都有效。
当我使用 connectionUrl 时,这对我很有帮助。
postgres://password:postgres@localhost:5432/database?sslmode=disable
Run Code Online (Sandbox Code Playgroud)
?sslmode=disable您可能已经注意到我在连接网址末尾添加了。
有关更多信息,sslmode请查看此内容。