将SailsJS部署到Heroku

时间:2014-06-12 11:41:53

标签: node.js heroku sails.js

我无法让我的应用启动,但它始终失败并出现以下错误:

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之外,它们都具有完全相同的代码(因此我可以启动不同的脚本)。 第一个应用程序是我的实际应用程序,第二个应用程序是应该填充数据库 First 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=

是否可以只运行工人?

1 个答案:

答案 0 :(得分:2)

此处存在一些问题,以及您应遵守的规则/最佳做法:

  1. 不要将网页/工作人员分成单独的应用程序,将它们放在同一个应用程序中,同一个Procfile

    web: node app.js
    worker: node worker/APIDataLoader.js
    
  2. NODE_ENV环境变量属于heroku config,不会传递到Procfile
  3. 您的工作人员似乎只是退出而无需做什么,是否有一些错误被抑制?
  4. web中不需要Procfile进程,请确保您没有尝试将web扩展到0以上。