【问题标题】:First Heroku deploy failed `error code=H10`第一次 Heroku 部署失败 `error code=H10`
【发布时间】:2012-12-28 16:20:52
【问题描述】:

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

什么意思?

【问题讨论】:

  • “App crashed”的意思很明显:你的应用程序崩溃了。在您的日志中进一步查看原因,或heroku restart 再次启动它,这样您就可以看到它再次崩溃。
  • 我也有同样的问题。你是怎么解决的?
  • 此问题有 1 个答案,到目前为止已收到 6 次投票...请选择该答案作为此问题的正确答案。
  • 嗨@ilyo!你能批准我对此的回答吗?它已经 7 岁了,并且一直在帮助人们:) 谢谢!

标签: node.js heroku express


【解决方案1】:

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

web: gunicorn__init__:app

请注意,gunicorn__ init __

之间没有空格

而不是 web: gunicorn __init__:app

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        web : node index.js
        

        我改成

        web:node index.js
        

        唯一的问题是空格

        【讨论】:

        • 很确定冒号需要像web: node index.js 一样放置,并且删除我显示的那个空间是可选的
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

            我为同样的错误苦苦挣扎了好几个小时,但我能够解决它。我错误地将 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"
            }
            

            【讨论】:

              【解决方案8】:

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

              web: node build/server.js
              

              我在 .gitignore

              中包含了 /build

              【讨论】:

                【解决方案9】:

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

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

                【讨论】:

                  【解决方案10】:

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

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

                  保存并上传到 Heroku,它工作了

                  【讨论】:

                    【解决方案11】:

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

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

                    【讨论】:

                      【解决方案12】:

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

                      【讨论】:

                        【解决方案13】:

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

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

                        不要使用

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

                        这解决了我的问题

                        【讨论】:

                          【解决方案14】:

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

                          【讨论】:

                            【解决方案15】:

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

                            【讨论】:

                              【解决方案16】:

                              H10 错误代码可能有很多不同的含义。就我而言,第一次是因为我不知道 Heroku 与 Sqlite3 不兼容,第二次是因为我不小心推送了 Google Analytics 在开发和生产中工作的更新。

                              【讨论】:

                                【解决方案17】:

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

                                const PORT = process.env.PORT || config.httpPort;
                                
                                app.listen(PORT, ...)
                                

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

                                【讨论】:

                                  【解决方案18】:

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

                                  【讨论】:

                                    【解决方案19】:

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

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

                                    【讨论】:

                                      【解决方案20】:

                                      我错了

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

                                      曾经是

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

                                      【讨论】:

                                        【解决方案21】:

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

                                        【讨论】:

                                          【解决方案22】:

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

                                          node --version
                                          

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

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

                                          【讨论】:

                                            【解决方案23】:

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

                                            【讨论】:

                                              【解决方案24】:

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

                                              【讨论】:

                                                【解决方案25】:

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

                                                【讨论】:

                                                  【解决方案26】:

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

                                                  效果很好:)

                                                  【讨论】:

                                                    【解决方案27】:

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

                                                    heroku restart
                                                    

                                                    (在 mac 上使用 Heroku 工具带)

                                                    【讨论】:

                                                    • 我得到了相同的错误代码,我的以前可以工作,但这突然开始发生了。 “heroku restart”命令为我解决了这个问题。
                                                    • 添加新遗物后我也发生了同样的事情。重启解决了我的问题
                                                    • 它对我有用,如果这是第一次部署,试试这个
                                                    【解决方案28】:

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

                                                    【讨论】:

                                                      【解决方案29】:

                                                      在这里为我找到了解决方案: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);
                                                      });
                                                      

                                                      【讨论】:

                                                      • 嗯,谢谢你的解决方案。我遇到了完全相同的问题,经过几个小时的研究,您的回答解决了我的问题。
                                                      • 即使 2 年过去了,这篇文章在 Heroku 崩溃时帮助了我。谢谢@Martin Schaer。
                                                      • 这正是我使用 java spring boot 的问题。谢谢
                                                      • 现在我们大多数人都在使用 ES6。所以同样的答案也可以用箭头函数写在 ES6 中。 app.listen(process.env.PORT || 3000, () => { console.log("Express server 在 %s 模式下监听端口 %d", this.address().port, app.settings.env) ; });
                                                      • @PraveenKumar-M 通常该行进入服务器的主文件 (index.js)。 app 是 express 的一个实例
                                                      猜你喜欢
                                                      • 2021-04-16
                                                      • 1970-01-01
                                                      • 2019-07-04
                                                      • 1970-01-01
                                                      • 2020-04-28
                                                      • 2021-10-22
                                                      • 2014-03-30
                                                      • 2018-07-21
                                                      • 2021-11-03
                                                      相关资源
                                                      最近更新 更多