Heroku部署应用崩溃求助:已定位Procfile格式问题并修复
终于搞定这个烦人的问题了!我跟你遇到了一模一样的状况:开发环境跑起来完全没问题,一部署到Heroku就直接崩溃,控制台刷出来的全是H10错误日志。折腾了半天,最后发现罪魁祸首居然是Procfile文件里冒号和启动命令之间的空格——Heroku对这个文件的格式要求特别严格,多出来的这一个空格直接导致它识别不了启动指令,进而引发应用崩溃。
复盘问题场景
你看到的崩溃日志如下:
at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=desolate-wildwood-76797.herokuapp.com
request_id= fwd="fwd" dyno= connect= service= status=503 bytes= protocol=https
2018-05-22T23:15:39.338510+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/"
host=desolate-wildwood-76797.herokuapp.com request_id= fwd=""
dyno= connect= service= status=503 bytes= protocol=https
你之前尝试删除favicon相关代码完全没用,因为问题根本不在这,而是Procfile的格式写错了。
正确的Procfile格式要点
Procfile里的启动命令必须是这种标准写法:web: node server.js——冒号和后面的命令之间绝对不能有空格!如果不小心写成web: node server.js(冒号后多了空格),Heroku就会无法解析这个启动指令,直接导致应用启动失败,触发H10错误。
我把Procfile里的这个空格删掉之后,重新部署到Heroku,应用立刻就正常运行了。你赶紧检查下自己的Procfile是不是也犯了这个低级但容易忽略的错误!
内容的提问来源于stack exchange,提问作者Diagathe Josué

