在Node.js中侦听EADDRNOTAVAIL错误

时间:2012-05-30 03:45:38

标签: javascript node.js

我在服务器中安装了Nginx和Node.js.

当我尝试运行我的node.js文件时,出现错误:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: listen EADDRNOTAVAIL
    at errnoException (net.js:614:11)
    at Array.0 (net.js:689:28)
    at EventEmitter._tickCallback (node.js:192:40)

如何解决此问题?

谢谢!

11 个答案:

答案 0 :(得分:48)

我遇到了这个问题,我认为这是一个端口问题,但结果却是 IP 问题。

我的HOST环境变量指向静态IP,我的节点服务器正在侦听该地址。在我的路由器回收的某个时刻,它开始为我的机器分配一个新IP,我开始收到你发布的错误。它是通过更改我的服务器正在侦听的地址来修复的。

我的配置:

app.set('port', process.env.PORT || 3000);
app.set('host', process.env.HOST || '0.0.0.0');

http.createServer(app).listen(app.get('port'), app.get('host'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

确保您的主机正在点击您的计算机。无论如何,@ miltonb建议的环回应该始终有效:

app.set('host', '127.0.0.1');

答案 1 :(得分:7)

我得到了同样的错误,然后我改变了端口并且工作了

答案 2 :(得分:5)

我认为你需要更多的上下文,比如你的一些代码。我猜你开始在网络服务器或套接字上听?基于这个假设,当我在测试服务器上运行基本Web服务器时,我会得到类似的东西,除非我使用localhost运行。

events.js:48
        throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRNOTAVAIL
    at errnoException (net.js:670:11)
    at Array.0 (net.js:756:28)
    at EventEmitter._tickCallback (node.js:190:38)

尝试将[hostname]参数更改为localhost:

var http = require('http');
http.createServer( function ).listen(8000, '127.0.0.1');

答案 3 :(得分:4)

该节点是否已在运行服务器?我收到了类似的错误,并在排除故障时发现了关闭上一个节点服务器解决了我的问题。

答案 4 :(得分:1)

大多数情况下,它将是IP地址或主机名。原因是,节点js将其作为启动服务器的关键项。如果存在冲突或错误的IP地址,则会出现此错误

错误:听EADDRNOTAVAIL

希望这会有所帮助。

答案 5 :(得分:1)

对我来说,我有同样的错误,当我检查配置时,我发现host=127.0.0.0会引发错误,因为它应该是127.0.0.1而不是127.0.0.0

答案 6 :(得分:1)

对我来说,问题是我写的IP根本不存在:)通常在家里我有一个192.168.x.x IP,重新启动后我有一个不同的地址...当我尝试时gulp serve到我的应用-它具有使用旧IP的配置...。

一如既往127.0.0.1可以使用,但是当您想通过其他设备验证您的网站时,您想要使用外部IP 192.168.x.x ...或类似的IP地址。

答案 7 :(得分:0)

var express = require('express');

var app = express();
app.set('port', process.env.PORT || 3000);
app.set('host', process.env.HOST || 'localhost');

app.listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('host') + ':' + app.get('port'));
});

对我有用。
它也是localhost和你的本地ip调试的通用版,没有任何变化。

答案 8 :(得分:0)

这也会发生'ip addr add i:p:v:6'仍然处于不稳定状态(刚刚执行/ ing),接口是我认为还没完全准备好听还是添加新的ipv6地址

execSync睡眠2秒似乎允许听错误而不是错误:听EADDRNOTAVAIL。

这是我在Ubuntu上的NodeJS 7.4.0中的一个错误,因为在使用/监听连接之前的瞬间创建ipv4地址不会发生这种情况。

答案 9 :(得分:0)

例如检查IP ipconfig的地址并添加任何端口3004。 下面的代码终于对我有用。如果您想从网络中的其他设备访问此服务器。或者只需将本地主机ip设置为127.0.0.1并从您的设备获得访问权限。

var server = require('http').createServer(app);
server.listen(3004, '192.168.x.x', function () {
  console.log("Listening on port 3000!");
});

答案 10 :(得分:-1)

就我而言,我通过检查目录/ tasks / options

来修复它

我发现connect.js文件的静态IP地址不正确。我只是把它改成了正确的,但它确实有效。