Node.js应用程序在Heroku上崩溃

时间:2018-12-14 10:35:56

标签: node.js api heroku twitter

我有一个使用Twitter API开发的Nodejs应用程序。在Heroku上托管时,出现以下错误:

  

2018-12-14T10:00:03.678180 + 00:00 heroku [web.1]:错误R10(引导超时)-> Web进程在启动后60秒内未能绑定到$ PORT
  2018-12-14T10:00:03.678256 + 00:00 heroku [web.1]:使用SIGKILL停止进程
  2018-12-14T10:00:03.739029 + 00:00 heroku [web.1]:进程退出,状态为137

在搜索时,我遇到了以下StackOverflow问题 q1 q2 ,但它们都使用 ExpressJS 并监听固定端口,而不是Heroku提供的端口,而我的应用程序未使用 ExpressJS 所以,我不明白问题出在哪里。我还使用 heroku local 在本地运行了该应用程序,并且运行良好。这篇Heroku文章讨论了该错误,但我无法将其与我的应用相关文章
谁能解释这个错误并提出可能的解决方案?

我的代码代码

2 个答案:

答案 0 :(得分:1)

如果您不使用ExpressJS(不必这样做-它只是使事情变得简单的Web服务器),则应使用Node的常规http服务器。

请参见下面摘自here的代码-进行了稍微的编辑。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.write('Hello World!');
  res.end();
}).listen(process.env.PORT || 8080);

答案 1 :(得分:1)

Heroku将检查以 web 应用程序运行的应用程序(在 Procfile 中定义,或者默认情况下)是否有HTTP请求,如果找不到任何传入的HTTP请求,那么它将抛出无法绑定到端口错误。对于本应在后台运行的此类应用程序(例如此Twitter应用程序),通过在 Procfile 中定义 worker 来以 worker 身份运行该应用程序。
有关创建 Procfile 的更多信息,请访问procfile。要了解有关 web worker 的更多信息,请访问link1 link2