156

我有一个在本地计算机上运行的 RoR 应用程序,但是当我将它发送到 heroku 时,它崩溃了。错误日志给出错误 H10 并说:

    2012-11-21T15:26:47+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/newrelic_rpm-3.4.2/lib/new_relic/control/instance_methods.rb:95:in `start_agent'
    2012-11-21T15:26:48+00:00 heroku[web.1]: State changed from starting to crashed
    2012-11-21T15:26:48+00:00 heroku[web.1]: Process exited with status 1
    2012-11-21T15:26:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:27:00+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=

编辑:

2012-11-22T10:00:58+00:00 app[web.1]: 
2012-11-22T10:00:59+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno=web.1 queue=0 wait=0ms connect=1ms service=26ms status=200 bytes=0

有没有人以前有过这种情况,并且知道可能导致问题的原因吗?我找不到解决方案。

谢谢。

4

36 回答 36

343

我在上面遇到了同样的错误,应用程序在 heroku 上崩溃(在 dev 中运行良好)但 heroku 上的错误日志没有显示任何线索。我在此页面上阅读了其他答案,并在看到“重建应用程序”后大汗淋漓。我想也许我可以进入 heroku 控制台并环顾四周。我做到了,甚至控制台也崩溃了,但这一次它告诉了我原因。这是我在几个小时前的故障排除会话中忘记删除的一些模糊变量。我并不是说您会遇到同样的问题,但是当我尝试通过控制台时,我发现了更多信息。希望这可以帮助。

$ heroku run rails console
于 2014-06-09T03:23:37.703 回答
50

我遇到了同样的问题。日志也没有给我任何线索。所以我缩小并扩大了测功机。这为我解决了这个问题:

heroku ps:scale web=0

等了几秒...

heroku ps:scale web=1
于 2016-01-12T16:43:41.733 回答
23
$heroku run rails console 

这是最好的选择,因为它会在您的终端中给您一个错误,这将比您 Heroku 日志中的“应用程序崩溃”错误更详细。

于 2014-06-30T20:26:48.403 回答
20
$ heroku restart

帮助我让我的测功机再次运行。我是 Heroku 的新手,但很高兴我现在知道了。

于 2016-02-21T22:20:51.700 回答
14

当我在错误的端口上监听时,这发生在我身上

我将listen()更改为“process.env.PORT”,所以:

http.listen((process.env.PORT || 5000), function(){
  console.log('listening on *:5000');
});

代替

http.listen(5000, function(){
  console.log('listening on *:5000');
});
于 2015-07-06T21:49:29.087 回答
11

今天晚上有同样的问题。不是一个很有帮助的错误,所以我尝试在控制台中运行

heroku run rails c

它失败了,给了我一个更有帮助的错误。我忽略了删除生产中的方法调用。一旦我解决了这个问题,该应用程序就可以正常工作了。

于 2016-04-14T03:04:46.437 回答
5

我通过推送到 Git 解决了这个问题:

git add .
git commit -am "some text"
git push

然后推送到 Heroku:

git push heroku

然后 rake db:migrate 在 Heroku 上:

heroku run rake db:migrate
于 2013-03-17T07:59:28.283 回答
3

我设法不包括我的 .gitignore 文件-> 破坏了heroku。#doh

这是一个有效的 .gitignore 文件

/.bundle
/vendor/bundle/
/vendor/ruby/


db/*.sqlite3
/db/*.sqlite3-journal
/log/*
/tmp/*


**.war
*.rbc
*.sassc
.redcar/
.sass-cache
/config/config.yml
/config/database.yml
/coverage.data
/coverage/
/db/*.javadb/
/db/*.sqlite3
/doc/api/
/doc/app/
/doc/features.html
/doc/specs.html
/public/cache
/public/stylesheets/compiled
/public/system/*
/spec/tmp/*
/cache
/capybara*
/capybara-*.html
/gems
/specifications
rerun.txt
pickle-email-*.html
.zeus.sock

**.orig

.DS_Store

/nbproject/

.idea

/*.tmproj

**.swp

.env
.powenv

要创建 .gitignore 文件,请在终端导航到您的应用程序目录并使用以下命令

touch .gitignore

然后你可以在你的文本编辑器中打开它并将上面的代码放入其中。

于 2014-09-17T17:26:11.537 回答
3

在我的情况下,我在我的应用程序中使用 ENV 变量,但它没有在 heroku 配置中设置。

heroku 控制台给出了正确的错误:

heroku console
`validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

然后设置 ENV 配置

heroku config:set AWS_ACCESS_KEY_ID='key'

重启 Heroku

heroku restart

有用!!

于 2017-06-20T19:24:50.100 回答
2

我在 Heroku 中遇到了同样的 H10 应用程序崩溃错误。我在heroku界面中点击了'restart all dynos',问题就解决了。

于 2016-02-04T19:30:46.053 回答
2

H10由于主代码文件的名称错误,我使用 Heroku 和 Node。编辑package.json

{

  ...

  "main": "correct_file_name.js",

  ...

  "scripts": {
    "start": "node correct_file_name.js"
  }
}

或者重命名文件。

于 2017-11-28T03:11:13.280 回答
2

就我而言,Procfile我使用的是破坏一切。HerokuProcfile在启动应用程序时查找并应用其设置 - 显然我使用的开发设置对产品服务器没有任何意义。我不得不将其重命名为Procfile.dev,一切都开始正常工作。

于 2018-06-22T15:33:53.713 回答
2

如果您使用的是 Node,您可以尝试直接在控制台中运行 serve 命令。就我而言,我正在运行一个角度应用程序,所以我尝试了:

heroku run npm start

这向我展示了应用程序启动期间的确切错误。

于 2019-02-20T15:49:51.690 回答
2

解决方案为我工作,尝试运行命令::

Heroku 重启

在此处输入图像描述

于 2020-09-10T09:00:21.317 回答
1

我面临的问题的根源是没有数据库。为了解决这个问题,我首先导出了我的本地数据库:

$ heroku addons:add heroku-postgresql:dev 
$ heroku addons:add pgbackups
$ PGPASSWORD=mypassword pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump 

然后将其导入 Heroku:

$ heroku pgbackups:restore DATABASE 'http://site.tld/mydb.dump'

在这些示例中要替换的变量是:mypasswordmyusermydb& http://site.tld/mydb.dump。请注意,我必须将转储上传到临时服务器。

为了解决我所有的问题,我写了一份关于如何将 Enki 部署到 Heroku 的快速指南,可以在这里找到

于 2012-12-11T10:21:52.470 回答
1

看看你是否得到

bash: bin/rails: No such file or directory

在日志中运行(heroku logs -t)命令如果是,那么请运行

bundle exec rake rails:update

不要覆盖你的文件,最后这个命令将创建

  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake

将这些文件推送到heroku,你就完成了。

于 2015-06-10T08:41:47.133 回答
1

我得到了与“应用程序崩溃”相同的上述错误,heroku 应用程序日志没有显示与错误消息原因相关的太多信息。然后我在 heroku 中重新启动了 dynos,然后它显示错误,在我的设置中的 index.js 文件之一中显示附加花括号。删除并在 heroku 上重新部署应用程序后,该问题得到解决。

希望这对面临同样问题的人有所帮助。

于 2017-09-06T04:48:20.817 回答
1

在浏览了整个答案列表后,我偶然发现了这个网站:https ://status.heroku.com/ ,它详细介绍了 Heroku 的当前状态/事件。在将头撞到墙上之前检查事件总是安全的。对我来说,是在上述链接上发布的附加事件报告导致了错误。

服务器事件更新

于 2018-01-04T20:31:29.297 回答
1

我有同样的问题,我做了以下

heroku run rails c

它在控制器允许的参数中识别出语法错误和缺少逗号。如上所述,Heroku 日志没有提供足够的信息来解决问题。

我之前没有在 Heroku 上看到应用程序崩溃的消息。

于 2018-10-06T11:36:34.113 回答
1

我和@Ahmed Elkoussy 一样将我的问题追溯到Puma 服务器,但我只是通过在puma.rb 文件中注释以下行来解决:

# pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }

于 2019-12-12T06:01:11.640 回答
0

我今天遇到了同样的问题。尽管我之前迁移了模型,但我确实做到heroku run rake db:migrate了,并且应用程序没有崩溃。

于 2012-12-11T05:20:50.097 回答
0

复制和粘贴代码时要非常小心。有时,当您将块添加到文件中时,它的格式不正确并会产生错误。

我以前遇到过这个问题并得到了这个错误:意外的tIDENTIFIER,期待keyword_end

于 2014-10-02T02:07:42.330 回答
0

有同样的问题。对我来说这是 before_action 过滤器中的错误(因为空数据库)检查你的 before_action 过滤器,也许他们会抛出无法处理的异常。

于 2015-06-30T10:05:43.357 回答
0

我在尝试在子目录中运行 Rails 时遇到了这个问题,而不是在/. 例如,我运行 Angular/Node/Gulp 应用程序/client和运行 Rails 应用程序/server,但它们都在同一个 git 存储库中,因此我可以跟踪前端和后端的更改。尝试将它们部署到 Heroku 时出现此错误。对于其他遇到此问题的人,这里有一个自定义构建包,它允许在子目录中运行 Rails。

https://github.com/aarongray/heroku-buildpack-ruby

于 2015-07-13T22:20:27.280 回答
0

我遇到了同样的问题(heroku 上的同样错误,在本地机器上工作),我尝试了这里列出的所有解决方案,包括 heroku run rails console 运行时没有错误消息的解决方案。我试heroku run rake db:migrateheroku run rake db:migrate:reset几次。这些都没有解决问题。在浏览一些用于生产但不在开发环境中的文件时,我发现 puma.rb 文件中的一些空白是罪魁祸首。希望这可以帮助有同样问题的人。改变它使它工作

  ActiveRecord::Base.establish_connection
  End

  ActiveRecord::Base.establish_connection
end
于 2015-12-12T15:59:18.100 回答
0

我在部署到 Heroku(应用程序崩溃)时遇到了同样的问题。日志没有指出问题可能是什么。Heroku 控制台在额外括号的代码中显示语法错误。令人惊讶的是,我在运行应用程序时在本地轨道上没有遇到问题,因此错过了它。在更正和 git push 到 Heroku 之后,该应用程序开始在 Heroku 上运行!

于 2016-11-17T22:17:11.170 回答
0

我从 app.set('ip_address', process.env.IP || '127.0.0.1' ); 更新了我的设置;

app.set('ip_address', process.env.IP || '0.0.0.0' );

我为 Openshift 托管更改了

于 2017-06-12T16:06:41.707 回答
0

当我根据他们的指南页面开始在 heroku 中使用 Puma 时遇到了同样的问题,当我评论下面显示的端口行时,这个问题得到了解决

# port        ENV['PORT']     || 3000

因此,在配置目录的 puma.rb 中禁用上述行解决了这个问题

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
# port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'production'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end
于 2019-02-11T20:39:49.120 回答
0

就我而言,git push heroku master当我不在主分支上时,我正在执行。我必须先去 master 分支,将代码与我的另一个分支合并,然后 git push。

于 2019-10-24T16:22:44.140 回答
0

我也遇到了同样的错误。向我的项目添加.gitignore文件解决了我的问题。

我的.gitignore文件在这里:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

我改变了listen()功能;

app.listen(5000, function() {
console.log("Server running on port 5000...");
});

我把它改成了;

    const PORT = process.env.PORT || 5000

...

    app.listen(PORT, function() {
    console.log("Server running on port 5000...");
    });
于 2020-04-24T11:20:32.577 回答
0

我在 Dev 上发布的解决方案适用于大多数使用 React 的人:

https://medium.com/@uros.randelovic/causes-of-heroku-h10-app-crashed-error-and-how-to-solve-them-70495914d2a3?sk=1c51cf95e904f754a43a4b63a06b5503

npm install serve --s
"scripts": {
"dev": "react-scripts start",
"start": "serve -s build",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"heroku-postbuild": "npm run build"
}
于 2020-06-25T01:53:42.123 回答
0

我在服务器端应用程序中遇到了同样的问题。默认情况下,浏览器向 favicon.ico 请求服务器。所以我使用了 serve-favicon包。这是设置:

import favicon from "serve-favicon";
server.use(favicon(path.join(__dirname, "../assets/images/favicon.ico")));
于 2020-07-31T04:53:39.060 回答
0

我的 50 美分,我也遇到了这个问题,并通过以下方式解决:

  • 从构建过程的一开始就通过 UI 检查日志(例如,在提交之后,重新启动 dynos)以查看崩溃前发生了什么

  • 当链接模块不包括项目的根目录时(我的问题..)

这:

const router = require('./logic/router.js') 

代替:

const router = require('../DMS/logic/router.js') 
于 2020-08-05T20:36:39.693 回答
0

我知道这个问题很老了。我添加了新的答案,以防万一有人在 Rails 3 上遇到同样的问题。

就我而言,一旦在 Gemfile 上意外评论了“薄”宝石,应用程序就开始在 Heroku 上崩溃。

它再次起作用,我添加了那个宝石。

于 2020-12-14T09:55:11.907 回答
0

在 node.js 中有同样的问题

修复:从项目的 .env 文件中删除 PORT

// app.ts 或 app.js

const PORT = process.env.PORT || '5000';

// .env

PORT=5000 <--- 注释或删除此行

于 2021-04-06T17:47:46.200 回答
0

我从 rails 6 升级到 rails 7 后遇到了这个问题。这是因为 rails 7 使用默认的图像处理器:vips,但我没有准备我的应用程序使用 vips,所以出现了问题。

由于我想继续使用 :mini_magick ,就像在 rails 6 中一样,我只需将这一行添加到 config/application.rb 中,一切都很好:

config.active_storage.variant_processor = :mini_magick

我在这里得到了这些信息


现在,我是怎么想出来的?谢天谢地,我可以看到最后一个 heroku 日志来了解用户刚刚在生产应用程序上做了什么,我在本地运行应用程序,并在本地执行相同的操作,服务器崩溃了,我在服务器日志中看到了一个涉及 vips 的问题.

于 2022-02-18T11:40:24.183 回答