我有一个使用Heroku部署的Node.js应用程序,以及一个链接到它的Heroku Postgres数据库。该应用程序还使用express和EJS来渲染页面。
我最近通过拉取请求将更新部署到GitHub上的主分支(主分支自动部署)。在我这样做之后,我的应用程序开始为似乎所有运行数据库查询的请求提供H12超时错误。如果我加载一个不涉及DB查询的页面,该页面将加载得很好。应用控制台中没有记录其他错误,只有请求超时。客户端浏览器控制台中也没有记录错误。
在此之后,我使用恢复拉取请求通过GitHub恢复了部署。因此,现在GitHub中的主分支,目前也部署到实时应用程序中,具有与更新前相同的代码。但是,对于所有使用DB查询的请求,我仍然收到H12错误,尽管代码与以前一切正常时的代码完全相同。我试着重启所有的dynos,但都没有帮助。
如果我转到Heroku中的Activity选项卡,并在更新之前恢复到旧的构建版本,那么站点就可以正常工作,数据库查询也会正常处理。但是,一旦我用原始代码重新部署了主分支,我就又回到了H12错误。
更令人困惑的是,我可以使用旧版本或更新版本在本地运行应用程序,一切都很好。
我没有更改Heroku中的任何环境变量,也没有更改数据库登录信息。我是目前唯一正在访问实时应用程序的人,因此请求超时不是由其他站点流量引起的。我甚至使用New Relic来查看站点事务,并且我已经确认我是唯一访问该站点的人。
对于这里可能存在的问题,有人有什么想法吗?我完全不知所措。
可以通过here访问完整的存储库。
发布于 2021-02-10 12:27:20
在过去的几天里,Heroku似乎已经将他们的默认node.js部署版本从12.20.1改为14.15.4。
通过在package.json文件中添加以下"engines"部分,显式应该可以解决您的问题:
{
"name": "Contest-judging-tool",
"version": "0.1.0",
"description": "description": "An open source tool used to judge official contests on Khan Academy",
"main": "index.js",
"engines": {
"node": "12.20.1"
},
"scripts": ...
}https://stackoverflow.com/questions/66112339
复制相似问题