首先Heroku部署失败,错误代码= H10


86

我将应用程序部署到了Heroku。这是一个node.js + express + socket.io应用,这是package.json文件

{
  "name": "game_test",
  "author": "Ilya",
  "description": "A test app for our board game",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.6",
    "jade": "*",
    "socket.io" : "*"
  },
 "engines": {
      "node": "0.8.14"
  }
}

这是我得到的日志:

heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=

这是什么意思?


4
“应用程序崩溃”的含义很明显:您的应用程序崩溃了。在日志中进一步查找原因,或者heroku restart再次启动它,以便您可以再次查看它的崩溃。
willglynn

我有同样的问题。你怎么修好它的?
Martin Schaer 2013年

6
到目前为止,该问题有1个答案,迄今为止已经收到6票赞成投票...请选择该答案作为该问题的正确答案。
拉基布

嗨@ilyo!你可以批准我对此的答复吗?它已经7岁了,并且一直在帮助人们:)谢谢!
Martin Schaer

Answers:


192

在这里找到适合我的解决方案:Heroku + node.js错误(Web进程在启动后60秒内未能绑定到$ PORT)

就我而言,我的应用程序崩溃是因为我很难设置PORT,而不是使用heroku dinamicaly设置的端口,可以使用 process.env.PORT

app.listen(process.env.PORT || 3000, function(){
  console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});

1
好,谢谢您的解决方案。我遇到了完全相同的问题,经过几个小时的研究,您的回答解决了我的问题。
LukyVj 2014年

2
即使2年了,当Heroku崩溃时,这篇文章也帮助了我。感谢@Martin Schaer。
雷伊·邦戈

1
正是这是我的java spring boot问题。谢谢
Mohy Eldeen

2
这些天,我们大多数人都在使用ES6。因此,也可以使用箭头功能在ES6中编写相同的答案。app.listen(process.env.PORT || 3000,()=> {console.log(“ Express服务器在%s模式下监听端口%d”,this.address()。port,app.settings.env) ;});
Hemadri Dasari '18

这发生在我身上,这是由于尝试导入不在我的package.json文件中的库引起的。
伊凡·皮尔森

47

我的应用程序刚遇到类似的问题,在迁移数据库后,尝试了许多选择之后遇到了这个问题,这对我有帮助:

heroku restart

(在Mac上使用Heroku工具带)


1
我得到的错误代码和以前的代码一样可以正常工作,但是突然之间所有事情开始发生。“ heroku restart”命令为我清除了此问题。
迈克,

添加新遗物后,我也发生了同样的事情。重新启动解决了我的问题
Kris Hollenbeck

5

就我而言,我发现了相同的错误,因为本地计算机上的node和npm版本存在差异,并在package.json版本中进行了定义。

"engines": {
  "node": "0.8",
  "npm": "1.2.x"
}

当我检查使用

node --version : v0.10.41
npm --version : 1.4.29

当我将package.json更新为

 "engines": {
  "node": "0.10.41",
  "npm": "1.4.29"
}

它工作正常:)


5

就我而言,添加process.env.PORT || 3000到我的http服务器脚本中,已解决。我的heroku日志报告'H20'错误和503 http状态。



3

就我而言,我的Procfile指向错误的文件(我以前使用过的bot.js),所以一旦更新它,错误就消失了。


3

使用hapi18后,我发现取出“主机”字段并将端口设置为:

port: process.env.PORT || 5000 做到了。


2

还要检查您的数据库连接。我忘记了从本地主机更改数据库连接,一旦将其推送到heroku,这会使我的应用程序崩溃。


2

我遇到了同样的问题,上面的答案都没有帮助我。我做了什么:

node --version

并在package.json中添加引擎部分以及您的节点版本:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}

2

旧线程,但我通过将PORT常量设置为process.env.PORT ||来解决此问题。

由于某些奇怪的原因,它想先搜索Env。


1

就我自己而言,出现此错误是因为我拒绝将Procfile添加到我的node js应用程序中,而我的“ main”:“ app.js”最初指向另一个js文件作为main。因此,进行这些调整可以为我解决问题


1

我有错字

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

以前是

const PORT = process.env.port||'8080';


1

就我而言,我忘记设置数据库环境以进行部署。您可以通过此命令设置环境(我在将MongoDB服务器使用mLab)

heroku config:set MONGO_URI ='mongodb:// address'


1

对我来说,它是Package.json,即使我认为我确实安装了它们,它也没有依赖项。.因此,我必须最后使用--save选项重新安装它们,并验证它们是否已添加到package.json中。再推一次,它奏效了。


1

如果nodemon像我一样在本地启动节点服务器,并且在本地可行,请尝试npm start。Nodemon没有告诉我任何错误,但是npm start以一种可以理解的方式告诉了我很多错误,然后我可以通过关注这里的其他帖子来解决它们。我希望它对某人有帮助。


1

就我而言,package.json文件的脚本部分中没有启动命令。当我使用创建package.json文件时,npm init没有创建启动脚本命令。所以我转到package.json文件,在脚本下添加了一个新条目:

 "scripts": {
    "start": "node index.js"
  },

保存并上传到Heroku并成功



0

我的端口设置为config.httpPort解析为80。我通过执行此操作来修复它:

const PORT = process.env.PORT || config.httpPort;

app.listen(PORT, ...)

非常感谢,昨晚浪费了我很多时间。


0

H10错误代码可能意味着很多不同的东西。就我而言,第一次是因为我不知道Heroku与Sqlite3不兼容,第二次是因为我无意中推送了Google Analytics(分析)在开发和生产中的更新。


0

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



0

我正在使用抛出异常的body-parser

const bodyParser = require('body-Parser')    
//Bodyparser Middleware
app.use(bodyparser.json())

使用注意事项

    //Bodyparser Middleware
    app.use(express.json())

这解决了我的问题


0

我想在这里注册该错误的解决方案,这是一个未更新为Github的简单文件。

我有一个完整的堆栈项目,我的文件既是后端的根目录,又是前端的客户端(我正在使用React.js)。全部归结为一个事实,即我将客户端文件夹错误地推到了Github,而我所有有错误的更改(在我的index.js中的对象实例中缺少逗号)都没有在后端进行更新。由于此Heroku从Github存储库中获取所有更新,因此我无法访问服务器,并且错误仍然存​​在。然后,我要做的就是提交并推送到根目录,并更新项目的所有更改,然后一切又恢复正常。


0

在我的情况下,我的代码为H10状态为503,因为我的Procfile文件是:

web: node build/server.js

我在.gitignore中包含了/ build


0

我在几个小时内都遇到了同样的错误,但是我能够解决它。我错误地将multer和aws-sdk安装为devDependencies,而不仅仅是依赖关系。因此,任何有相同错误的人,只需仔细检查您的package.json文件。

另外,package.json中有关引擎属性的小技巧。

enter code here
//The greater or equal operators will make sure that you use the right node 
//version 
//even if your current node is greater version than npm node

"engines": {
"node": ">= 0.8.14"
},


//insted of
"engines": {
  "node": "0.8.14"
}

0

出现此错误时,我正在部署python Django框架,因为我忘记输入应用名称web: gunicorn plaindjango.wsgi:application --log-file -而不是plaindjango

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.