我的本地计算机上有一个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
以前是否有人有这个,并知道可能导致问题的原因是什么?我找不到解决方案。
感谢。
答案 0 :(得分:251)
我遇到了同样的错误,应用程序崩溃了heroku(在开发中运行正常)但是heroku上的错误日志没有透露任何线索。我在这个页面上阅读了其他答案,并在看到“重建应用程序”后大汗淋漓。我想也许我可以进入heroku控制台并环顾四周。我做了,甚至控制台崩溃了,但这次它告诉我为什么。这是一个模糊的变量,我忘了在早些时候的故障排除会话中删除。我不是说你会遇到同样的问题,但是当我试图通过控制台时,我发现了更多信息。希望这会有所帮助。
$ heroku run rails console
答案 1 :(得分:37)
我遇到了同样的问题。日志也没有给我任何线索。 所以我按比例缩小并缩小了dynos。这解决了我的问题:
heroku ps:scale web=0
等了几秒......
heroku ps:scale web=1
答案 2 :(得分:18)
$heroku run rails console
这是最好的选择,因为它会在您的终端中给您一个错误,这个错误比“崩溃的”应用程序更加详细。你的Heroku日志中的错误。
答案 3 :(得分:16)
$ heroku restart
帮助我让我的dyno再次运行。我是Heroku的新手,但很高兴我现在知道了。
答案 4 :(得分:11)
我将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');
});
答案 5 :(得分:10)
今天晚上有同样的问题。这不是一个非常有用的错误,所以我尝试在控制台中运行
heroku run rails c
它失败了,给了我一个更有帮助的错误。我忽略了删除生产中的方法调用。一旦我解决了这个问题,该应用程序运行良好。
答案 6 :(得分:5)
我通过推送到Git解决了这个问题:
git add .
git commit -am "some text"
git push
然后推送到Heroku:
git push heroku
然后rake db:在Heroku上迁移:
heroku run rake db:migrate
答案 7 :(得分:2)
我设法不包含我的.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文件,请在终端导航到您的apps目录并使用以下命令
touch .gitignore
然后您可以在文本编辑器中打开它并将上面的代码放入其中。
答案 8 :(得分:2)
答案 9 :(得分:2)
在我的情况下,我在我的应用程序中使用ENV变量,但它没有在heroku配置中设置。
heroku console给出了正确的错误:
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
它有效!!
答案 10 :(得分:2)
我在Heroku中遇到了同样的H10应用程序崩溃错误。我点击了“重启所有dynos'在heroku界面,问题解决了。
答案 11 :(得分: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'
这些示例中要替换的变量包括:mypassword
,myuser
,mydb
& http://site.tld/mydb.dump
。请注意,我必须将转储上传到临时服务器。
解决我的所有问题我写了一篇关于如何将Enki部署到Heroku的快速指南,which can be found here。
答案 12 :(得分:1)
我遇到了同样的问题,我做了以下
heroku run rails c
它标识出语法错误和控制器允许的参数内缺少逗号。如上所述,Heroku日志没有提供足够的信息来解决问题。
我以前没有在Heroku上看到应用程序崩溃的消息。
答案 13 :(得分:1)
在浏览完整个答案列表后,我偶然发现了这个网站:https://status.heroku.com/详细说明了Heroku的当前状态/事件。在将头撞在墙上之前检查事故总是安全的。对我来说,正是在上述链接上发布的附加事件报告导致了错误。
答案 14 :(得分:1)
由于主代码文件的名称错误,我与Heroku和Node有H10
。修改package.json
:
{
...
"main": "correct_file_name.js",
...
"scripts": {
"start": "node correct_file_name.js"
}
}
或重命名文件。
答案 15 :(得分:1)
我得到了与上面相同的错误" app崩溃"并且heroku应用程序日志没有显示与错误消息相关的太多信息。然后我重新启动了heroku中的dynos,然后它显示错误,在我的设置中的一个index.js文件中说了额外的花括号。一旦删除并在heroku上重新部署应用程序,问题就解决了。
希望这对面临同样问题的人有所帮助。
答案 16 :(得分: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,你就完成了。
答案 17 :(得分:0)
我在服务器端应用程序中遇到了同样的问题。默认情况下,浏览器向服务器请求favicon.ico。因此,我使用了serve-favicon软件包。这是设置:
INSERT INTO tm_utm (day, station, east, north, height) VALUES (b'2547', 32394691.312, 5693210.5467, 264.5246), (b'6578', 32362171.6427, 5702679.4317, 217.2954) ...
答案 18 :(得分:0)
我在Dev上发布的解决方案,适用于大多数使用React的人:
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"
}
答案 19 :(得分:0)
我的50美分,我也遇到了这个问题,并通过以下方式解决了
:从构建过程开始就通过UI检查日志(例如,提交后重新启动dynos),以查看崩溃之前发生的情况
当链接模块不包含项目的根目录时(我的问题..)
此:
const router = require('./logic/router.js')
代替:
const router = require('../DMS/logic/router.js')
答案 20 :(得分:0)
我知道这个问题很老了。我添加新的答案,以防万一有人在Rails 3上遇到相同的问题。
在我的情况下,一旦“稀薄”的宝石在Gemfile上被意外注释,应用程序便开始在Heroku上崩溃。
再次起作用,我又重新添加了该宝石。
答案 21 :(得分:0)
我今天遇到了同样的问题。我做了heroku run rake db:migrate
虽然我之前迁移了模型,但应用程序没有崩溃。
答案 22 :(得分: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...");
});
答案 23 :(得分:0)
在 node.js 中有同样的问题
修复:从项目的 .env 文件中删除 PORT
// app.ts 或 app.js
const PORT = process.env.PORT || '5000';
// .env
答案 24 :(得分:0)
我像@Ahmed Elkoussy一样,将问题追溯到Puma服务器,但是我只是通过在puma.rb文件中注释以下行来解决:
# pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
答案 25 :(得分:0)
就我而言,我不在master分支上时正在执行git push heroku master
。
我必须先进入master分支,将代码与其他分支合并,然后进行git push。
答案 26 :(得分:0)
如果您使用的是Node,则可以尝试直接在控制台中运行serve命令。就我而言,我正在运行一个有角度的应用程序,所以我尝试了:
heroku run npm start
这向我显示了应用程序启动期间的确切错误。
答案 27 :(得分:0)
按照their guide页面在heroku中开始使用Puma时,我遇到了相同的问题,当我注释了如下所示的端口行时,此问题已解决
# port ENV['PORT'] || 3000
因此,在config目录的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
答案 28 :(得分:0)
就我而言,我使用的Procfile
破坏了一切。 Heroku在启动应用程序时会寻找Procfile
并应用其设置-显然,我使用的dev设置对prod服务器没有任何意义。我不得不将其重命名为Procfile.dev
,一切开始正常工作。
答案 29 :(得分:0)
我更新了我的设置 app.set(' ip_address',process.env.IP || ' 127.0.0.1' );
到
app.set(' ip_address',process.env.IP || ' 0.0.0.0' );
我为Openshift托管改变了
答案 30 :(得分:0)
我在部署到Heroku(应用程序崩溃)时遇到了同样的问题。日志没有说明问题可能是什么。 Heroku控制台在额外括号的代码中显示语法错误。令人惊讶的是,我在运行应用程序时没有在本地轨道上出现问题,因此错过了它。经过修正和git推送到Heroku后,该应用程序开始使用Heroku!
答案 31 :(得分:0)
我遇到了同样的问题(heroku上的错误,在本地机器上工作),我尝试了这里列出的所有解决方案,包括
heroku run rails console
没有错误消息运行。我曾几次尝试heroku run rake db:migrate
和heroku run rake db:migrate:reset
。这些都没有解决问题。在浏览一些在生产中但不在dev环境中使用的文件时,我发现puma.rb文件中有一些空格是罪魁祸首。希望这有助于有同样问题的人。
改变它使它工作
ActiveRecord::Base.establish_connection
End
到
ActiveRecord::Base.establish_connection
end
答案 32 :(得分:0)
尝试在子目录中运行Rails而不是/
时遇到此问题。例如,我在/client
中运行了Angular / Node / Gulp应用程序,在/server
中运行了一个Rails应用程序,但它们都在同一个git仓库中,所以我可以跟踪前端的变化和后端。尝试将它们部署到Heroku时出现此错误。对于其他任何有此问题的人,这里有一个自定义buildpack,允许在子目录中运行Rails。
答案 33 :(得分:0)
有同样的问题。对我来说,在before_action过滤器中是错误的(因为空DB) 检查你的before_action过滤器,也许他们会抛出无关紧要的exeptions。
答案 34 :(得分:0)
对复制和粘贴代码要非常谨慎。有时,当您将一个块添加到文件中时,它的格式不正确并将产生错误。
之前我遇到过此问题并收到此错误:意外的tIDENTIFIER,期待keyword_end