EADDRNOTAVAIL与Heroku nodejs服务器错误 [英] Error EADDRNOTAVAIL with Heroku nodejs server

查看:111
本文介绍了EADDRNOTAVAIL与Heroku nodejs服务器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在OpenShift上开发了一个nodejs服务器,现在我正试图在Heroku上为一个新项目制作同样类型的服务器。



这是一个最小代码我的服务器:

  var http = require('http'); 
var port = process.env.PORT || 8080;
var address = process.env.IP || 127.0.0.1’ ;

console.log(address);
console.log(port);

var server = http.createServer(function(req,res)
{
res.writeHead(200,{'Content-Type':'text / html',' Access-Control-Allow-Origin':'*'});
res.write(JSON.stringify({valid:true}));
res.end();
} );

server.listen(port,address);

与我的OpenShift服务器的区别在于:


  • 通过process.env.PORT和process.env.IP替换变量process.env.OPENSHIFT_NODEJS_PORT,process.env.OPENSHIFT_NODEJS_IP。

  • 我设置使用此命令行的IP变量:heroku config:set IP = MYSERVERADDRESS.com



我无法启动我的服务器,它总是崩溃,而我不明白为什么,我的服务器的日志是:

  MYSERVERADDRESS.com 
41184
events .js:154
throw er; //未处理的'错误'事件
^
错误:侦听EADDRNOTAVAIL MYSERVERIP:41184
在Object.exports._errnoException(util.js:893:11)
处于exports._exceptionWithHostPort (util.js:916:20)
在Server .__ dirname.Server.Server._listen2(net.js:1233:19)
at net.js:1391:9
at GetAddrInfoReqWrap .asyncCallback [as callback](dns.js:63:16)
at listen(net.js:1282:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:82:10 )


解决方案

我的猜测是你的Heroku服务器不会请将您的(外部)服务器地址作为其(内部)IP号码(外部IP地址很可能会在Heroku网络堆栈的早期终止),这意味着您不能在其上明确地侦听(基本上是 EADDRNOTAVAIL 表示)。



相反,不要使用地址来收听:

  server.listen(port); 


I have developped a nodejs server on OpenShift and I am now trying to make the same kind of server on Heroku for a new project.

Here is a minimal code of my server:

var http = require('http');
var port = process.env.PORT || 8080;
var address = process.env.IP || '127.0.0.1';

console.log(address);
console.log(port);

var server = http.createServer(function(req, res)
{
    res.writeHead(200, { 'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*' });
    res.write(JSON.stringify({ valid: true }));
    res.end();
});

server.listen(port, address);

Differences with my OpenShift server are:

  • The replacement of variables process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP by process.env.PORT and process.env.IP.
  • I set the IP variable with this command line: heroku config:set IP=MYSERVERADDRESS.com

I cannot start my server, it always crash and I don't understand why, the logs of my server are:

MYSERVERADDRESS.com
41184
events.js:154
       throw er; // Unhandled 'error' event
   ^
 Error: listen EADDRNOTAVAIL MYSERVERIP:41184
     at Object.exports._errnoException (util.js:893:11)
     at exports._exceptionWithHostPort (util.js:916:20)
     at Server.__dirname.Server.Server._listen2 (net.js:1233:19)
     at net.js:1391:9
     at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16)
     at listen (net.js:1282:10)
     at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10)

解决方案

My guess would be that your Heroku server will not have your (external) server address as its (internal) IP-number (the external IP-address will most likely terminate earlier in the Heroku network stack), which means that you cannot explicitly listen on it (which is basically what EADDRNOTAVAIL means).

Instead, don't use an address to listen to at all:

server.listen(port);

这篇关于EADDRNOTAVAIL与Heroku nodejs服务器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆