我无法启动我的应用程序,它不断失败并显示以下错误:

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/

10-09 22:16