gpt4 book ai didi

node.js - TypeError : Cannot call method 'query' of null - when calling pg. 连接 Heroku node.js

转载 作者:IT老高 更新时间:2023-10-28 23:18:05 27 4
gpt4 key购买 nike

我在通过 Node.js 连接到 Heroku postgres 数据库时遇到问题。我发现有人遇到此问题的另一个实例,但他们的建议对我的情况不起作用。

我将 var DB_URL 定义为 Heroku 存储的完整 Postgres 数据库 URL。我这样做是因为没有定义 process.env.DATABASE_URL。 (这是另一个堆栈溢出帖子的建议)。

尝试连接的代码是:

pg.connect(DB_URL, function(err, client) {
client.query( ... )

运行工头时:

client.query('INSERT INTO bookmarks (username, title, image, url) VALUES (       
^
TypeError: Cannot call method 'query' of null

这里的 null 指的是要传递给 pg.connect 匿名函数的客户端对象。

感谢您的建议,我在 Heroku 文档和 Google 上搜索过很多次,但无济于事。

最佳答案

我的网站也遇到了同样的问题,更令人沮丧的是它在已部署的网站上运行,但是当我尝试在本地运行该网站(使用工头)时,我收到了这个错误。从错误中我了解到我无法连接到数据库并进一步检查这些是导致此错误的两个原因:

  1. 无 DATABASE_URL 环境变量
    出于某种原因,我的 .env 文件中没有设置 process.env.DATABASE_URL,尽管它在远程站点上已正确设置。要解决此问题,您可以运行“heroku config”并将所需的 DATABASE_URL 复制到本地 .env 文件(如果此文件不存在,请创建一个)。
    重要提示:当您复制粘贴变量时,将“:”字符更改为“=”。

  2. ?ssl=true 不是 DATABASE_URL 的一部分
    由于上述修复,客户端现在知道在哪里连接,但由于身份验证问题它仍然无法打开连接。通过将 ?ssl=true 添加到 DATABASE_URL 它最终为我解决了这个问题。似乎当您尝试从远程站点(heroku 服务器)连接时,您不需要传递参数,但是当您尝试从本地计算机连接到数据库时,您需要此身份验证才能进行正确的连接。

希望它会有所帮助。

关于node.js - TypeError : Cannot call method 'query' of null - when calling pg. 连接 Heroku node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com