注意:一切都在我的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
命令),当我尝试连接到端口时,我的应用程序仍然超时。
答案 0 :(得分:1)
哇,我明白了。我的服务器中有这一行:
app.listen(app.get('port'), 'localhost', function onStart(err) ....
我只需要从'localhost'
函数中删除listen()
。