在Node.js中侦听EADDRNOTAVAIL错误

thu*_*inh 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)

我该如何解决这个问题?

谢谢!

Joh*_*der 50

我有这个问题,我认为这是一个端口问题,但事实证明这是一个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'));
});
Run Code Online (Sandbox Code Playgroud)

确保您的主机正在击中您的计算机.在任何情况下,@ miltonb建议的环回应始终有效:

app.set('host', '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)

  • 我的以太网电缆丢失了,因此具有不同的IP(WiFi)。固定! (2认同)

Fed*_*ico 7

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


mil*_*onb 6

我认为你需要更多的上下文,比如你的一些代码.我猜你开始在网络服务器或套接字上听?基于这个假设,当我在测试服务器上运行基本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)
Run Code Online (Sandbox Code Playgroud)

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

var http = require('http');
http.createServer( function ).listen(8000, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)


小智 5

是不是那个节点已经在运行服务器了?我收到了类似的错误,并在故障排除时发现了这个错误。关闭以前的节点服务器解决了我的问题。