Heroku的应用程序崩溃的process.env.PORT
问题描述:
听的时候当我在Heroku上部署此:Heroku的应用程序崩溃的process.env.PORT
app.js
var port = process.env.PORT || 8080;
app.listen(port, function(){
console.log("Listening on port : " + port);
});
我的错误日志:
2014-11-08T18:05:34.300115+00:00 app[web.1]: events.js:72
2014-11-08T18:05:34.300402+00:00 app[web.1]: throw er; // Unhandled 'error' event
2014-11-08T18:05:34.300404+00:00 app[web.1]: ^
2014-11-08T18:05:34.303599+00:00 app[web.1]: Error: listen EADDRINUSE
2014-11-08T18:05:34.303605+00:00 app[web.1]: at errnoException (net.js:904:11)
2014-11-08T18:05:34.303607+00:00 app[web.1]: at Server._listen2 (net.js:1042:14)
2014-11-08T18:05:34.303608+00:00 app[web.1]: at listen (net.js:1064:10)
2014-11-08T18:05:34.303610+00:00 app[web.1]: at Server.listen (net.js:1138:5)
2014-11-08T18:05:34.303628+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:556:24)
2014-11-08T18:05:34.303629+00:00 app[web.1]: at Object.<anonymous> (/app/bin/www:7:18)
2014-11-08T18:05:34.303630+00:00 app[web.1]: at Module._compile (module.js:456:26)
2014-11-08T18:05:34.303632+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2014-11-08T18:05:34.303633+00:00 app[web.1]: at Module.load (module.js:356:32)
2014-11-08T18:05:34.303635+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
但是当我直接听8080端口它工作,我不明白为什么:
var port = 8080;
app.listen(port, function(){
console.log("Listening on port : " + port); //it work
});
我刚开始使用nodejs,我不明白它为什么崩溃。
有人可以解释这个或如何“调试”这个原因?
谢谢!
答
OK,问题是,快递发电机创建包含/斌/ WWW文件:
#!/usr/bin/env node
var debug = require('debug')('toto');
var app = require('../app');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
这就是为什么已经使用的端口。
谢谢
答
错误“EADDRINUSE”表示某个东西已经在监听此端口。
我想没有什么东西在你的机器上听8080,这就是为什么它直接设置它的原因。使用console.log(process.env.PORT)
打印您试图聆听的端口。 然后检查什么程序监听使用netstat -tunap
此端口,您会收到类似这样的东西:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN 3425/inetd
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 3640/X
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 3425/inetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7586/sshd
杀掉相关的程序,然后再试一次。
要调试nodejs,我会推荐node-inspector,非常容易使用,它使用chrome开发工具ui。
你已经发现了从未记录,也从未说过的秘密宝石。我花了DAYS试图发现这个错误。我没有编码错误,表达式发生器只是在一个奇怪的文件中做了一些我未曾说过的话。我很生气,但我现在至少可以继续前进。 T.Y. ! – Ric 2015-10-11 08:09:01