-1

当我尝试将我的 NestJS 应用程序部署到 Heroku 时,我看到了错误Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

为什么设置 url0.0.0.0使其工作?

const port = process.env.PORT || 5000;
await app.listen(port, '0.0.0.0');

语境:

  • 当我在没有我的应用程序的情况下部署时0.0.0.0Listening at http://127.0.0.1:<randomNumber>
  • 当我使用我的应用程序部署时0.0.0.0Listening at http://127.0.0.1:<randomNumber>
  • 节点版本:16.13.0
  • 巢穴
  • 中间件:Fastify
  • NPM_CONFIG_PROD=false
  • 没有cors
  • 没有头盔
"@nestjs/common": "^8.0.0",
"@nestjs/core": "^8.0.0",
"@nestjs/platform-fastify": "^8.0.11",
4

1 回答 1

0

127.0.0.1- 也通常称为localhost- 用作环回机制,它允许服务在本地机器(即您的笔记本电脑/开发服务器)上侦听,而无需互联网甚至网络接口。

由于这个127.0.0.1接口是本地的并且仅在测功机内部,Heroku 无法从用于向您的测功机发送请求的网络路由器连接到它;它需要一个外部的、面向互联网的网络接口。这就是0.0.0.0发挥作用的地方。这意味着服务应该监听所有网络接口上的请求,包括 Heroku 期望发送请求的那些。这意味着 Heroku 可以使用其中一个面向外部的网络接口来实际连接和路由到您的服务。

有关更多信息,请查看此线程

于 2021-12-25T00:50:54.530 回答