【问题标题】:How to make my app on Heroku stop timing out如何让我在 Heroku 上的应用停止超时
【发布时间】:2023-03-09 12:55:01
【问题描述】:

我制作了一个简单的金融应用程序,其中包含一个 React 前端和 Node/express 后端,我想将它部署到 Heroku。由于它是一个小型应用程序,我将所有内容(服务器和客户端文件)都放在了我的 git 存储库的根目录中。因此前端(index.html)、后端(index.js)的入口文件和Heroku所需的Procfile都在根目录下。

服务器似乎工作正常,因为我可以成功地从本地安装的前端发出请求。但是,服务器似乎无法提供静态文件。

这是来自 heroku 的日志消息:

2021-07-29T15:21:00.260957+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=xpensoft.herokuapp.com request_id=2a484f4d-30cf-49b9-920d-14b9e9be28fb fwd="31.151.16.151" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https

我正在使用此服务器代码提供静态文件:

if (process.env.NODE_ENV === 'production') {
    app.use(express.static(__dirname));
}

有人知道是什么导致了超时吗?

编辑:

除了上面的代码,它应该提供静态文件(不幸的是没有),服务器文件中没有处理“/​​”端点的特定代码。只有特定命名端点的代码。

在 React 应用程序中,我使用 React Router 重定向用户:

<Route exact path='/'>
   <Redirect to='/user' />
</Route>

但是 React 应用程序永远不会加载。

【问题讨论】:

  • 在 heroku 控制台检查 heroku 日志或使用 Heroku CLI 命令“heroku logs -t -a herokuAppName”。如果找不到根本原因,请在此处发布。
  • 另外,究竟什么是超时?部署或访问您的端点之一?
  • 我编辑了帖子,请参见上文。服务器似乎在工作,但是没有提供静态文件

标签: node.js reactjs express heroku


【解决方案1】:

当您的应用需要超过 30 秒的时间将响应发送回客户端时,就会出现请求超时错误。

所以处理“/”路由的代码存在一些问题。

如果您的静态文件在提供服务时遇到问题,则很可能是 .env 文件的问题。 所以在 Heroku Settings > Config Vars 中手动添加环境变量

【讨论】:

  • 感谢您的回答但是我确实在 Heroku 中正确设置了配置变量。所以这不可能是原因。
  • 静态文件在你目录的根目录下?
  • 是的,它们在根目录中
  • 能否在您的问题中提供“/”路由器的代码
  • 我编辑了我的问题,我希望这就是你的意思
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2013-09-02
  • 2023-03-10
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多