嗨,开发社区!
如果你发现了这篇博文,我已经能感觉到你的挫败感。你是否对这个错误束手无策?
也许你像我一样是个初学者,或者参加了一个训练营,你准备部署你的第一个应用程序。有人推荐了Heroku,所有的视频和教程都让它看起来足够简单明了。你一步一步地按照指导,你一丝不苟,小心翼翼,因为你知道一个错别字会让你陷入困境。
成功了!你收到以下确认:
-----> Build succeeded!
...
-----> Verifying deploy.... done.
-----> Running release command...
----->Waiting for release.... Done.
兴奋的是,你的第一次尝试似乎就成功了,你命令heroku open ,你得到了以下信息......
然后你按照吩咐运行heroku logs --tail ,得到与下面类似的东西:
2022-09-21T22:11:34.028636+00:00 heroku[web.1]: Process exited with status 1
2022-09-21T22:11:34.088522+00:00 heroku[web.1]: State changed from starting to crashed
2022-09-21T22:11:35.045857+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=book-worm-hole.herokuapp.com request_id=f3e2af21-0107-4e02-b791-9b172d4dc646 fwd="97.98.68.225" dyno= connect= service= status=503 bytes= protocol=https
2022-09-21T22:11:35.883219+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=book-worm-hole.herokuapp.com request_id=ac2ff6bc-db19-43c4-936b-d25f8de1b4af fwd="97.98.68.225" dyno= connect= service= status=503 bytes= protocol=https
听着,我刚刚经历了这个漩涡。希望我可以指导你如何排除故障,找出导致这种情况的原因。但是,警告你......这个错误是一个迷宫,可以有很多解决方案的结局。谷歌最终仍将是你的朋友!
让我们开始吧!
什么是H-10错误?
Heroku提供了以下关于这个错误的有限信息。
崩溃的Web dyno或Web dyno的启动超时会出现这个错误。Heroku错误代码
分开来看,"Dynos "是Heroku设计的Linux容器,旨在根据用户的命令(资源)来执行你的代码。
"启动超时 "就是它听起来的样子。这个错误是因为Heroku无法配置在哪个端口上运行该应用程序。
如果你从heroku logs --tail 的错误与上述情况相吻合,我们就可以解决web dynos崩溃的问题了。
故障排除步骤
1.运行heroku运行rails控制台
这是我发现的比较有帮助的提示之一!如果你的
错误与我的类似,运行这个命令会
提供更多具体的错误。
我的命令返回如下(但你的命令可能返回不同的结果)。
/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:35:in `require': cannot load such file -- net/pop (LoadError)
....
6.1.7/lib/rails/command.rb:48:in `invoke'
from /app/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7/lib/rails/commands.rb:18:in `<top (required)>'
from /app/bin/rails:5:in `require'
from /app/bin/rails:5:in `<main>'
2.谷歌!
在这个错误中,有很多东西你可以用谷歌搜索。根据你复制和搜索的内容,你可能得到不同的解决方案。
我从一个老师那里学到的一个技巧是,找到第一个错误行,然后谷歌加粗的术语或错误的尾部。
例如:"无法加载此类文件 -- net/pop"
解决方案
- 通过谷歌搜索,我了解到我的Gemfile中缺少宝石:
gem 'net-smtp'
gem 'net-imap'
gem 'net-pop'
虽然朋友和导师不需要上述东西,但有人向我解释说,不同版本的rails和ruby可能相互冲突。更新的版本可能没有 内置正确的gemfile,这可能需要你像我一样手动添加它们。
- H-10错误的一般原因,我推荐以下资源。 注意:解决方案可能已经过时,所以我将运行一般的命令,而不是插入每个建议。
- "Heroku H10-App崩溃的原因以及如何解决这些问题" - Lawrence Eagles
许多人评论说他们通过这些步骤获得了成功,但这些解决方案在我的案例中并没有提供成功。
总结
H-10对我自己来说是非常令人沮丧的解决方案与我同组的其他人遇到这个问题,也无法解决,只好求助于其他方案。这是一个完全可以接受的解决方案,因为解决这个问题的时间可以用在其他地方。最后,潜在的问题在不同的项目中会有很大的不同,我不相信这个问题和Heroku提供的文档对初学者是友好的。
说到这里,我学到了关于适当的googling和错误处理研究的宝贵信息。
我希望这能找到和我一样处于google螺旋中的那一位工程师
