NodeJS / Webpack Heroku部署的端口超时

时间:2016-06-08 06:12:45

标签: node.js heroku webpack

注意:一切都在我的localhost环境中完美运行。当我git push heroku master时,我获得了成功的推送/部署。我检查了Heroku Logs,我看到了这个错误:

[]: Stopping process with SIGKILL
[]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 120 seconds of launch

我已经阅读了很多有关此问题的帖子,我看到的修复是

app.set('port', (process.env.PORT || 4000));

这不是我的修复,因为我已经在我的服务器代码中执行此操作。这是我的服务器代码:

var path = require('path');
var express = require('express');

var app = express();
app.set('port', (process.env.PORT || 4000));

app.use(express.static(__dirname + '/public'));
app.get('*', function response(req, res) {
  res.render(path.join(__dirname, 'public/index.html'));
});

app.listen(app.get('port'), 'localhost', function onStart(err) {
  if (err) {
    console.log(err);
  }
  console.info('==> Listening on port %s.', app.get('port'));
});

注意:在Heroku日志中,打印==> Listening on port %s.,然后在此之后发生超时(没有错误)。所以它确实没有错误地到达我的服务器代码的末尾,它打印正确的,随机的Heroku端口。

此外,webpack -p也正确地创建了我的bundle.js

我的package.json有这两个命令,执行时没有错误:

"start": "NODE_ENV=production webpack -p && node server",
"postinstall": "bower install --force"

我真的很茫然。请帮忙!

编辑:我相信我已经将问题真正隔离到我的server.js文件中了。我最终做了webpack -p并推高了bundle.js文件 - 基本上绕过了Heroku上的webpack。然后,我执行简单的npm start命令(基本上只是node server.js命令),当我尝试连接到端口时,我的应用程序仍然超时。

1 个答案:

答案 0 :(得分:1)

哇,我明白了。我的服务器中有这一行:

app.listen(app.get('port'), 'localhost', function onStart(err) .... 我只需要从'localhost'函数中删除listen()