提问者:小点点

Heroku在调用我的endpoint时超时(H12),在本地服务器上运行良好


这里有全部的noob,目前正在学习node.js以及它所能获得的所有乐趣。我用node/express编写了一个REST API,数据库使用mongoDB(代码中使用mongoose)。该数据库是一个托管在AWS上的免费数据库(通过mongoDB网站)。

我正在用Postman调用以下endpoint:https://rewaer-backend.herokuapp.com/api/users/。

路由如下所示:

// GET all users
router.get("/", async (req, res) => {
  try {
    const user = await User.find();
    res.json(user);
  }
  catch (err) {
    res.status(400).json({ message: err });
  }
});

但是我从Heroku那里得到了以下错误:

2020-10-07T14:39:58.684608+00:00 HEROKU[router]:AT=错误代码=h12 desc=“请求超时”method=post path=“/api/users/”host=rewaer-backend.herokuapp.com request_id=94d50342-514e-45e7-94ad-5cb1acde44fa fwd=“37.120.11.242”dyno=web.1连接=1ms服务=30001ms状态=503字节=0协议=https

我的收藏“用户”只有两组数据。而且,真的很小。当在本地运行服务器(连接到AWS上的DB)时,这可以正常工作。正如您在我的代码中看到的,我应该返回一些东西,即使发生错误。所以没有理由在这里暂停。Heroku日志显示与db的连接成功。

我不知道在这里什么是不起作用的,谷歌也无法进一步帮助我:因此我向真正明智的人请教;)

非常感谢你的帮助,

克莱门特


共1个答案

匿名用户

MongoDB驱动程序中的默认服务器选择超时为30秒。Heroku的路由层也有30秒的超时,让应用服务器产生响应。

  • 将服务器选择超时更改为较低值。
  • 然后修复MongoDB连接问题(可能是IP白名单)。