在 Node.js 中收听 EADDRNOTAVAIL 错误

IT技术 javascript node.js
2021-02-28 05:00:24

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

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

node.js:201
        扔e; // process.nextTick 错误,或第一个滴答时的 'error' 事件
              ^
错误:听 EADDRNOTAVAIL
    在 errnoException (net.js:614:11)
    在 Array.0 (net.js:689:28)
    在 EventEmitter._tickCallback (node.js:192:40)

我该如何解决这个问题?

谢谢!

6个回答

我有这个问题,我以为是端口问题,但结果证明是IP问题。

我的HOST环境变量指向一个静态 IP,我的 Node 服务器正在侦听该地址。在我的路由器回收的某个时候,它开始为我的机器分配一个新 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');
我的以太网电缆丢失了,因此有一个不同的 IP (WiFi)。固定的!
2021-04-22 05:00:24
127.0.0.1 不适用于 ubuntu 上的 express.js。我删除了主机参数,它使用默认的本地主机。;)
2021-04-27 05:00:24

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

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');

我遇到了同样的错误,然后我更改了端口并开始工作

我遇到了同样的错误,这是因为我在 localhost:3000 上运行了 Ruby on Rails 应用程序。停止其他应用程序或更改端口都可以解决问题。
2021-04-21 05:00:24

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

我可以看到这是您对问题的第一个回答,因此您没有代表将其作为评论发布,但在未来,您可能需要考虑将其发布为评论。答案应该是您非常有信心解决问题的解决方案。
2021-05-16 05:00:24

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

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