Heroku Node.js错误R10(引导超时) - > Web进程在启动后60秒内无法绑定到$ PORT

fiv*_*ven 17 heroku node.js

我找到了十几种针对Express应用程序的解决方案,并设置了端口来监听.但我有一个不使用Express的应用程序,实际上并没有听任何东西.在成功运行60秒后,我收到一条Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch消息.我怎么能绕过它?谢谢.

fiv*_*ven 34

经过大量的谷歌搜索,我决定npm install express并添加

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

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

//For avoidong Heroku $PORT error
app.get('/', function(request, response) {
    var result = 'App is running'
    response.send(result);
}).listen(app.get('port'), function() {
    console.log('App is running, server is listening on port ', app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)

这修复了错误,即使我不喜欢添加表达只是为了避免一个错误.如果有人找到了更好的解决方案,请告诉我.

  • 我不确定这里最好的解决方案是什么,但我知道的一件事(确实有效)是使用Node.js内置模块`http`而不是需要快速模块.```var http = require('http'); http.createServer(function(req,res){res.writeHead(200,{'Content-Type':'text/plain'}); res.send('它正在运行\n');}).listen( process.env.PORT || 5000); ``` (8认同)
  • 请看下面关于更改proc文件并通过@pille缩放dynos的答案.它比这个答案要好得多,因为它不是一种解决方法,而是正确的方法. (2认同)

小智 28

如果您的应用程序没有监听任何端口,那么您应该在Procfile中使用其他类型的应用程序,我的意思是在Procfile中你有:

web: node app.js
Run Code Online (Sandbox Code Playgroud)

替换为:

worker: node app.js
Run Code Online (Sandbox Code Playgroud)

"web"类型的应用程序意味着您的应用必须听一些端口

  • 看起来,Heroku似乎忽略了Procfile中的设置. (2认同)

Pil*_*lle 20

另一种方法是使用这些命令将dynos从web(标准设置,无论Procfile中的设置)更改为worker:

heroku ps:scale web=0
heroku ps:scale worker=1
Run Code Online (Sandbox Code Playgroud)

有时Heroku会忽略Procfile中的设置.

  • 第二个命令对我来说失败了。我必须首先在我的 Procfile 中设置 `worker: npm start`。 (2认同)