116

我将我的应用程序部署到 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

29 回答 29

244

在这里为我找到了解决方案: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);
});
于 2013-06-08T22:40:10.090 回答
56

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

heroku restart

(使用 Heroku toolbelt for mac)

于 2016-01-12T14:46:18.927 回答
15

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

web : node index.js

我改为

web:node index.js

唯一的问题是空格

于 2019-02-20T15:54:48.543 回答
6

就我而言,我发现了同样的错误,因为我的本地机器上的 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"
}

它工作正常:)

于 2016-02-06T13:14:25.700 回答
5

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

于 2017-04-28T13:18:28.667 回答
4

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

于 2017-10-30T03:11:44.673 回答
3

还要检查您的数据库连接。我忘记从 localhost 更改我的数据库连接,一旦它被推送到 heroku,这会使我的应用程序崩溃。

于 2015-01-13T07:57:30.347 回答
3

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

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

保存并上传到 Heroku 并且可以正常工作

于 2019-09-30T21:54:38.600 回答
3

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

port: process.env.PORT || 5000成功了。

于 2019-10-09T05:58:28.943 回答
3

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

出于某种奇怪的原因,它想先搜索 Env。

于 2020-04-14T14:12:56.453 回答
2

我有一个错字

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

以前是

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

于 2018-05-02T15:54:05.673 回答
2

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

于 2019-06-18T16:55:59.007 回答
2

我遇到了同样的问题,上面的答案都没有帮助我。我所做的是运行:

node --version

并在 package.json 中添加带有节点版本的引擎部分:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}
于 2017-12-24T18:12:37.993 回答
1

在我自己的情况下,我收到了这个错误,因为我拒绝将 Procfile 添加到我的节点 js 应用程序中并且我的“main”:“app.js”最初指向另一个 js 文件作为 main。所以做这些改变会为我解决问题

于 2017-10-13T23:03:25.943 回答
1

就我而言,我有code=H10status=503因为我的 Procfile:

web: node build/server.js

我在.gitignore中包含/build

于 2019-10-24T19:11:06.987 回答
1

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

heroku 配置:设置 MONGO_URI='mongodb://address'

于 2018-12-14T22:00:07.193 回答
1

我的start命令有env-cmd -f ./config/prod.env node index.js.

更改为:node index.js它得到修复后。

于 2021-11-15T19:57:20.830 回答
1

我遇到了同样的问题,问题是我的个人资料是这样的:

web: gunicorn__init__:app

请注意上面的gunicorn__ init __之间没有空格

代替 web: gunicorn __init__:app

于 2022-01-24T14:27:21.983 回答
1

我的端口设置为config.httpPort解析为80. 我通过这样做来修复它:

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

app.listen(PORT, ...)

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

于 2019-02-19T09:54:35.637 回答
1

对我来说,它是 Package.json,尽管我认为我确实安装了它们,但它在依赖项中是空的。所以我不得不在最后使用 --save 选项重新安装它们并验证它们是否已添加到 package.json 中。然后再次推动它,它的工作。

于 2019-02-07T22:35:06.577 回答
0

较旧的线程,但对我来说,我没有.env在 Heroku 控制台中设置我的变量。

于 2019-04-02T13:38:02.267 回答
0

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

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

于 2019-09-12T18:02:57.703 回答
0

密码包含一个 % 为我打破了它。

于 2018-01-20T06:33:19.820 回答
0

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

于 2017-09-06T06:40:48.410 回答
0

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

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

而不是使用

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

这解决了我的问题

于 2019-06-13T06:35:18.617 回答
0

对我来说,我把东西不必要地分成了单独的文件夹。我正在运行 dash 并且我将我的Procfile, 和Pipfile(和锁定)放在一起,但与我的应用程序的其他功能分开(run.py并且app.py,正在使用的页面的实际内容在子文件夹中)。所以将大部分内容结合在一起修复了我的 H10 错误

于 2021-02-05T05:20:09.567 回答
0

H10 错误代码可能意味着许多不同的事情。就我而言,第一次是因为我不知道 Heroku 与 Sqlite3 不兼容,第二次是因为我不小心在开发和生产中使用 Google Analytics 推送了更新。

于 2019-03-20T21:53:50.297 回答
0

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

于 2020-06-12T11:37:59.850 回答
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"
}
于 2020-01-13T23:18:12.537 回答