【问题标题】:NestJS Heroku Deploy H10NestJS Heroku 部署 H10
【发布时间】:2020-05-07 13:30:55
【问题描述】:

我将 NestJS 应用程序部署到 Heroku 并获得 H10 Error

日志:

2020-05-07T13:12:51.967622+00:00 heroku[web.1]: State changed from starting to crashed

2020-05-07T13:15:14.556288+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=scalenode.herokuapp.com request_id=535e5643-26ad-4fbe-acf3-7f805c8c463c fwd="91.64.79.140" dyno= connect= service= status=503 bytes= protocol=https

它令人惊叹,因为错误来自 GET 请求。节点编译成功。我通过 HerokuCli 和 Github 部署。两者的结果相同。但是,如果我使用 heroku local web 在本地使用 HerokuCli 对其进行测试,它可以工作。

这似乎不是部署错误本身,它似乎是路由/ 无法解决,因此应用程序崩溃。成功部署后,当我在浏览器中打开应用程序时,似乎超时了。

Here is the Repo。我在/ 路由上有一个“Hello World”字符串。我无法找出问题所在。

我对实例使用 Procfile,这似乎很好:

web: node dist/main.js

编辑:

我尝试了静态 HTML 响应并尝试了稳定的节点版本 12.x。

不明白

2020-05-07T14:22:40.862206+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RoutesResolver] [39m[32mAppController {}:[39m[38;5;3m +6ms[39m

2020-05-07T14:22:40.865503+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RouterExplorer] [39m[32mMapped {, GET} route[39m[38;5;3m +3ms[39m

2020-05-07T14:22:40.865886+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RoutesResolver] [39m[32mAuthController {}:[39m[38;5;3m +0ms[39m

2020-05-07T14:22:40.867140+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RouterExplorer] [39m[32mMapped {/auth/login, POST} route[39m[38;5;3m +2ms[39m

2020-05-07T14:22:40.867778+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RouterExplorer] [39m[32mMapped {/profile, GET} route[39m[38;5;3m +0ms[39m

2020-05-07T14:22:40.868162+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RoutesResolver] [39m[32mFilesController {/files}:[39m[38;5;3m +1ms[39m

2020-05-07T14:22:40.868999+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[RouterExplorer] [39m[32mMapped {/files/upload, POST} route[39m[38;5;3m +0ms[39m

2020-05-07T14:22:40.873240+00:00 app[web.1]: [32m[Nest] 4   - [39m05/07/2020, 2:22:40 PM   [38;5;3m[NestApplication] [39m[32mNest application successfully started[39m[38;5;3m +5ms[39m

2020-05-07T14:22:42.000000+00:00 app[api]: Build succeeded

它不起作用...我无法在日志中找到更多详细信息,没有更具体的了。到底是怎么回事……

【问题讨论】:

  • 当您收到 H10 错误时,日志中是否还有其他内容显示错误? H10 是 Heroku 的通用应用程序崩溃,通常会显示某种错误。
  • 不,这很有趣。一切正常。没有其他错误或警告。 Nestjs 正在构建、部署并在日志中,正如您在上面看到的,它已构建。当我在浏览器 scalenode.heroku.com 中打开应用程序时,很长一段时间没有任何反应(白页),然后它崩溃并出现唯一的错误,您可以在上面的描述中看到。就是这样。有趣的是,这在我拥有的唯一错误日志中... desc="App crashed" method=GET path="/" ... 似乎无法解决根路由。但在当地它的作品。也可以在本地使用 heroku cli 进行测试
  • 您的client 目录似乎很难解决。您是否尝试过从终端查看文件结构?

标签: node.js heroku deployment nestjs


【解决方案1】:

在 main.ts 中,您是否尝试过更改端口号?类似于:

app.listen(parseInt(process.env.PORT) || 3000)

因为 Heroku 会尝试使用自己的端口。也许这也可以:

const port: number = parseInt(`${process.env.PORT}`) || 3000;
await app.listen(port);

【讨论】:

    【解决方案2】:

    您是否尝试将 heroku 配置变量 NPM_CONFIG_PRODUCTION 设置为 false?

    您可以通过转到 Heroku 仪表板 -> 设置 -> 显示配置变量来尝试此操作,然后添加上面的值。

    发生此错误主要是因为 NestJS 依赖于您项目中的一些 devDependencies,如果您在生产模式下构建 Nest 应用程序,heroku 会在构建 Nest 应用程序时删除 devDependencies。将 NPM_CONFIG_PRODUCTION 配置设置为 false 将在 Nest 应用程序的构建过程中包含所有开发依赖项,就像为开发环境构建一样。或者,您可以有选择地将与嵌套相关的 devDependencies 移动到 package.json 中的依赖项,直到问题消失。

    让我知道它是否有效!

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 2017-06-24
      • 2021-03-20
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2019-06-12
      • 2019-11-02
      相关资源
      最近更新 更多