我将我的应用程序部署到了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=
这是什么意思?
答案 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,我将 Procfile
和 Pipfile
(和锁)放在一起,但与我的应用程序的其他功能(run.py
和 app.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上重新部署应用程序,问题就解决了。