Heroku Node.js 错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
Posted
技术标签:
【中文标题】Heroku Node.js 错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT【英文标题】:Heroku Node.js Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 【发布时间】:2015-09-14 13:12:32 【问题描述】:我找到了十几种 Express 驱动应用程序的解决方案,它们设置了监听端口。
但是我有一个不使用 Express 的应用程序,实际上并没有听任何东西。
在它成功运行 60 秒后,我收到一条 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
消息。
我怎样才能绕过它?谢谢。
【问题讨论】:
【参考方案1】:经过大量谷歌搜索后,我决定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'));
);
这修复了错误,即使我不喜欢添加 express 只是为了避免一个错误。如果有人找到更好的解决方案,请告诉我。
【讨论】:
我不确定这里最好的解决方案是什么,但我知道的一件事(确实有效)是使用 Node.js 内置模块http
而不是需要 express 模块。 var http = require('http'); http.createServer(function (req, res) res.writeHead(200, 'Content-Type': 'text/plain'); res.send('it is running\n'); ).listen(process.env.PORT || 5000);
查看下面关于更改您的 procfile 和通过@pille 缩放您的测功机的答案。它比这个答案要好得多,因为它不是一种解决方法,而是正确的方法。【参考方案2】:
如果您的应用程序不监听任何端口,那么您应该在 Procfile 中使用另一种类型的应用程序,我的意思是在 Procfile 中您有:
web: node app.js
替换为:
worker: node app.js
“web”类型的应用程序意味着您的应用程序必须监听某个端口
【讨论】:
看起来,Heroku 似乎忽略了 Procfile 中的设置。 @Pille,你安装node-foreman了吗? 在我的例子中是worker: npm start
,但想法保持不变。成功了,非常感谢!【参考方案3】:
另一种方法是使用以下命令将 dyno 从 web(标准设置,无论 Procfile 中的设置如何)更改为 worker:
heroku ps:scale web=0
heroku ps:scale worker=1
有时 Heroku 会忽略 Procfile 中的设置。
【讨论】:
第二个命令对我来说失败了。我必须先在我的 Procfile 中设置worker: npm start
。
这对我有用,直到我删除了 heroku ps:scale web=0 行,这才开始,谢谢!【参考方案4】:
我也有同样的问题:
错误 R10(启动超时)-> Web 进程在启动后 60 秒内未能绑定到 $PORT
我尝试了很多东西。
以下不使用express的作品:
http.createServer(onRequest).listen(process.env.PORT || 6000)
【讨论】:
我需要在哪里设置该行? 我也有同样的问题,但是我使用的是 AdonisJS,我无法编辑这一行...【参考方案5】:我也遇到了同样的问题:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
在我的电脑 Windows 10 Visual Studio 代码中进行流畅的工作
app.listen(process.env.PORT || 8080);
还在package.json
中添加了这三行
"worker": "node index.js",
"start": "node index.js"
"test": "node test.js"
【讨论】:
【参考方案6】:这条评论解决了我的问题:https://***.com/a/67787556/8684435
问题是你定义端口的方式,它总是在 3001 上运行,这在 Heroku 上是不可能的,你需要绑定 $PORT 环境变量。 更改您的代码以检查 process.env.PORT 定义的第一个 fi(它将在 Heroku 上,但在您的本地开发环境中,它将默认为 3001)
app.listen(process.env.PORT || 3001, '0.0.0.0', () =>
console.log("Server is running.");
);
【讨论】:
以上是关于Heroku Node.js 错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT的主要内容,如果未能解决你的问题,请参考以下文章
Heroku Node.js 错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
Python heroku错误H20 App启动超时,R10启动超时
错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku
错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT - HEROKU ERROR
Heroku discord bot 托管错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT