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

时间:2013-01-14 16:57:54

标签: node.js heroku 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"
  }
}

这是我得到的日志:

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=

这是什么意思?

27 个答案:

答案 0 :(得分:149)

在这里为我找到解决方案:Heroku + node.js error (Web process failed to bind to $PORT within 60 seconds of launch)

在我的情况下,我的应用程序崩溃,因为我很难设置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 :(得分:35)

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

heroku restart

(使用Heroku toolbelt for mac)

答案 2 :(得分:5)

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

答案 3 :(得分:4)

在我的情况下,我发现同样的错误,因为我的本地机器上有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"
}

一切正常:)

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我遇到了这个问题,唯一的问题是我的Procfile我的Procfile就是这样

web : node index.js

然后我更改为

web:node index.js

唯一的问题是空格

答案 6 :(得分:2)

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

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

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

保存并上传到Heroku并成功

答案 10 :(得分:1)

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

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

答案 11 :(得分:1)

对我来说,它是Package.json,即使我认为我确实安装了它们,它也没有依赖项。.因此,我不得不最后使用--save选项重新安装它们,并验证它们是否已添加到package.json中。 。,然后再将其推入即可。

答案 12 :(得分:1)

我有一个错字

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

过去是

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

答案 13 :(得分:1)

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

node --version

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

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

答案 14 :(得分:1)

在我自己的情况下,我得到了这个错误,因为我拒绝将Proc文件添加到我的节点js app和我的“main”:“app.js”最初指向另一个js文件作为main。所以做这些chnages让我得到修复

答案 15 :(得分: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"
}

答案 16 :(得分:0)

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

答案 17 :(得分:0)

在我的情况下,我有 code = H10 status = 503 ,因为 Procfile:

web: node build/server.js

,我在 .gitignore

中包含了 / build

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

我使用的是引发异常的正文解析器

<table id="main-tbl">
  <tbody>
    <tr>
      <td>
        <table id="inner-tbl">
          <tr id="item_0">
            <td>
              <span>Name</span> <input type="text" value="Peterson" />
            </td>
            <td>
              <span>Country</span><input type="text" value="England" />
            </td>
            <td>
              <span>Email</span><input type="text" value="Peterson@gmail.com" />
            </td>
          </tr>
        </table>
      </td>
    </tr>
    <tr class="adder">
      <td>
        <input type="button" value="Add" onclick="addNewRow()" />
      </td>
    </tr>
  </tbody>
</table>

使用习惯

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

这解决了我的问题

答案 21 :(得分:0)

旧线程,但对我而言,我没有在Heroku控制台中设置.env变量。

答案 22 :(得分:0)

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

答案 23 :(得分:0)

我的端口设置为config.httpPort,该端口解析为80。我是通过以下方式解决的:

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

app.listen(PORT, ...)

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

答案 24 :(得分:0)

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

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

答案 25 :(得分:0)

包含%的密码打破了它。

答案 26 :(得分:0)

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