我将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部署。两者都有相同的结果。但是如果我用HerokuCli在本地用heroku local web
测试,它可以工作。
这似乎不是一个部署错误本身,它似乎是路由/
无法解决,所以应用程序崩溃.当我打开应用程序在浏览器成功部署后,它似乎是一个超时.
Here is the Repo。我在/
路由上有一个'Hello World'字符串。我找不到错误的地方。
我为示例使用了Procfile,这似乎很好:
web: node dist/main.js
编辑:
我尝试了静态HTML响应,并尝试了稳定的Node版本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
它不起作用...我在日志中找不到更多的细节,没有更具体的。到底出了什么问题...
3条答案
按热度按时间ercv8c1e1#
在main.ts中,您是否尝试过更改端口号?更改为如下内容:
由于Heroku会尝试使用自己的端口。也许这也可以工作:
b1payxdu2#
您是否尝试将heroku配置变量NPM_CONFIG_PRODUCTION设置为false?
你可以通过进入你的heroku Jmeter 板-〉设置-〉显示配置变量来尝试,然后添加上面的值。
发生此错误主要是因为NestJS依赖于项目中的某些devDependencies,如果您在生产模式下构建Nest应用程序,则heroku会在构建Nest应用程序时删除devDependencies。将NPM_CONFIG_PRODUCTION config设置为false将在Nest应用程序的构建过程中包含所有dev依赖项,就像为开发环境构建一样。或者,你可以选择性地将你的nest相关devDependencies移动到package.json中的dependencies,直到问题消失。
如果成功了就告诉我!
uxhixvfz3#
在我的情况是:
1.添加过程文件
1.在文件中,添加:web:npm run start:prod
并将脚本放在package.json中。
按照以下教程操作:
https://medium.com/weekly-webtips/deploying-a-nestjs-app-with-heroku-5fa84cb5b6c6