【问题标题】:Server runs locally but crashes on Heroku服务器在本地运行,但在 Heroku 上崩溃
【发布时间】:2021-08-25 19:45:07
【问题描述】:

我在 Heroku 上部署了我的服务器,但是当我提出任何请求时,它会返回“500 内部服务器”错误。它在本地运行良好。谁能帮忙看看是怎么回事?

当我检查我的日志时,这就是我得到的。

2021-06-08T18:43:09.715406+00:00 app[web.1]: error: no pg_hba.conf entry for host "3.90.138.215", user "detmvsbueicsez", database "da9nlve42hcp91", SSL off

回购链接:https://github.com/zcason/Restaurant-Review-Server 直播应用:https://restaurant-review-phi.vercel.app/

【问题讨论】:

  • 欢迎来到stackoverflow!请查看stackoverflow.com/help/how-to-ask 为这个问题添加更多重要信息:提供一个最低限度的工作示例,您尝试过什么等
  • 您的代码与 Heroku 的兼容性似乎有问题。

标签: node.js heroku


【解决方案1】:

正如Heroku help 中所述,这表明对数据库的身份验证尝试失败,因此无法建立连接。发生这种情况的原因可能不同。

在您的情况下,我怀疑这与不使用 ssl 有关。 因此,在查看了 github 存储库中提供的代码后,我注意到您正在使用 knex 并从 .env 获取 connection string

试试这个:

  • 只需添加此?ssl=true 并将其附加到.env 文件中DATABASE_URL 的末尾即可。

  • 编辑您的 server.js(我没有仔细查看代码,因此您需要在连接配置中添加此 ssl: { rejectUnauthorized: false }):

const db = knex({
    client: 'pg',
    connection: {
        connectionString: DATABASE_URL,
        ssl: { rejectUnauthorized: false }
    }
});
  • 还要确保您使用的是 wright 用户和密码以及数据库名称等

或替代

在终端中运行此命令heroku config:set PGSSLMODE=no-verify以省略ssl配置对象并将PGSSLMODE设置为no-verify

【讨论】:

  • 谢谢!我现在就去试试。
  • NO.. 这会将您的.env 推送到 github 存储库,并且您的信誉将被暴露女巫不好。 .gitignore 文件指定了 Git 应该忽略的故意未跟踪的文件。从提交推送等
  • 你可以在这里阅读更多关于.gitignoregit-scm.com/docs/gitignore
  • 这个答案也解决了您的问题,如果可以,请点赞并将其标记为已接受
  • 不,它没有。所以我在我的配置文件中添加了一行,类似于你告诉我要做的DATABASE_URL: process.env.DATABASE_URL + (process.env.NODE_ENV === 'production' ? '?ssl=true' : '') || "myLocalDataBaseUrl " ,现在我在我的heroku日志中得到了这个。 2021-06-08T21:31:18.468956+00:00 app[web.1]: Error: self signed certificate
猜你喜欢
  • 2021-04-08
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 2020-11-30
  • 2014-09-18
  • 2013-11-03
  • 2020-08-30
相关资源
最近更新 更多