我无法启动我的应用程序,它不断失败并显示以下错误:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我在
application.js
文件夹中创建了config
文件,其内容如下:module.exports = {
port: process.env.PORT || 1337
};
但这没有帮助。
我的应用程序的结构如下。
我在Heroku上有两个单独的应用程序。它们都具有完全相同的代码,除了不同的Procfiles(以便我可以启动不同的脚本)。
第一个应用程序是我的实际应用程序,第二个应用程序是应该填充数据库的工作程序。
第一个Procfile具有以下内容:
web: NODE_ENV=production node app.js
第二个(工人):
web: NODE_ENV=production node worker/APIDataLoader.js
该工作程序是失败的。
难道是其他问题出了错,而这个错误实际上“掩盖了”它吗?
更新
我将第二个Procfile更改为此:
worker: NODE_ENV=production node worker/APIDataLoader.js
所以现在是工人。我也为此应用程序运行
heroku ps:scale worker=1
。这就是我现在得到的:
State changed from up to starting
2014-06-12T14:42:53.556701+00:00 heroku[worker.1]: Starting process with command `NODE_ENV=production node worker/APIDataLoader.js`
2014-06-12T14:42:54.407140+00:00 heroku[worker.1]: State changed from starting to up
2014-06-12T14:42:52.111153+00:00 heroku[worker.1]: Stopping all processes with SIGTERM
2014-06-12T14:42:54.518997+00:00 heroku[worker.1]: Process exited with status 143
2014-06-12T14:51:54.297431+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path=/ host=surge-gearstream-worker.herokuapp.com request_id=073599af-192b-4b23-aef1-be7a264c43d2 fwd="188.2.72.207" dyno= connect= service= status=503 bytes=
2014-06-12T14:51:54.508784+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path=/favicon.ico host=surge-gearstream-worker.herokuapp.com request_id=adbb0bfa-2df7-47ad-9a27-4f6823db6ecf fwd="188.2.72.207" dyno= connect= service= status=503 bytes=
是否可以只运行工人?
最佳答案
这里有几个问题,以及您应遵循的规则/最佳实践:
不要将Web / Worker分成单独的应用程序,将它们都放在同一应用程序的同一Procfile
中:
web: node app.js
worker: node worker/APIDataLoader.js
NODE_ENV
环境var属于heroku config
,并且不能在Procfile
中传递您的工作人员似乎只是无所事事地退出了,是否抑制了某些错误?
web
中不需要Procfile
进程,请确保您未尝试将web
缩放到大于0
的比例。关于node.js - 将SailsJS部署到Heroku,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24183460/