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

ily*_*lyo 76 heroku node.js express

我将我的应用程序部署到了Heroku.这是一个node.js + express + socket.io app,这是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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的日志:

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=
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

Mar*_*aer 161

在这里为我找到解决方案: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);
});
Run Code Online (Sandbox Code Playgroud)

  • 嗯,谢谢你的解决方案。我遇到了完全相同的问题,经过几个小时的研究,您的回答解决了我的问题。 (2认同)
  • 即使是2年,这篇文章也帮助我解决了Heroku崩溃的问题.谢谢@Martin Schaer. (2认同)
  • 正是我的 java spring boot 问题。谢谢 (2认同)
  • 这些天我们大多数人都在使用ES6.因此,使用箭头功能也可以在ES6中编写相同的答案.app.listen(process.env.PORT || 3000,()=> {console.log("快速服务器在%s模式下侦听端口%d",this.address().port,app.settings.env) ;}); (2认同)

小智 41

我的应用程序遇到了类似的问题,我在迁移数据库后得到了问题,在尝试了很多选项之后,帮助我的那个是:

heroku restart
Run Code Online (Sandbox Code Playgroud)

(使用Heroku toolbelt for mac)

  • 我收到了相同的错误代码,我的以前可以工作,但突然开始发生这种情况。“heroku restart”命令为我解决了这个问题。 (2认同)

Ari*_*esi 12

我有这个问题,唯一的问题是我的 Procfile 是这样的

web : node index.js
Run Code Online (Sandbox Code Playgroud)

我改为

web:node index.js
Run Code Online (Sandbox Code Playgroud)

唯一的问题是空格

  • 很确定冒号需要像“web:node index.js”一样放置,并且删除我显示的空格是可选的 (4认同)

Mah*_*wad 7

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

 "scripts": {
    "start": "node index.js"
  },
Run Code Online (Sandbox Code Playgroud)

保存并上传到 Heroku 就可以了


Mah*_*han 5

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

"engines": {
  "node": "0.8",
  "npm": "1.2.x"
}
Run Code Online (Sandbox Code Playgroud)

当我检查使用

node --version : v0.10.41
npm --version : 1.4.29
Run Code Online (Sandbox Code Playgroud)

当我将 package.json 更新为

 "engines": {
  "node": "0.10.41",
  "npm": "1.4.29"
}
Run Code Online (Sandbox Code Playgroud)

它工作正常:)


小智 5

在我的情况下添加process.env.PORT || 3000到我的http服务器脚本,已解决.我的heroku日志报告"H20"错误和503 http状态.