![](/img/trans.png)
[英]Node.js websocket error "Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL"
[英]listen EADDRNOTAVAIL error in 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)
我该如何解决这个问题?
谢谢!
我有这个问题,我以为是端口问题,但结果证明是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');
我认为你需要更多的上下文,比如你的一些代码。 我猜你开始在网络服务器或套接字上收听? 基于这个假设,除非我使用 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');
我遇到了同样的错误,然后我更改了端口并开始工作
是不是那个节点已经在运行服务器了? 我收到了类似的错误,并在故障排除时发现了这个错误。 关闭以前的节点服务器解决了我的问题。
对我来说,问题是我写的 IP 根本不存在 :) 通常在家里我有一个192.168.xx
IP,重启后我有一个不同的地址......当我试图gulp serve
我的应用程序时- 它有一个旧 IP 的配置......
一如既往127.0.0.1
可以工作,但是当您想用其他设备验证您的网站时,您想使用外部 IP 192.168.xx
... 或类似的。
大多数情况下,它是 IP 地址或主机名。 原因是,node js 将其作为启动服务器的关键项。 如果存在冲突或不正确的 IP 地址,则会出现此错误
错误:听 EADDRNOTAVAIL
希望这可以帮助。
对我来说,我遇到了同样的错误,当我检查我的配置时,我发现host=127.0.0.0
会引发错误,因为它应该是127.0.0.1
而不是127.0.0.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 进行调试,无需任何更改。
当 'ip addr add i:p:v:6' 仍然处于不确定状态或其他东西(刚刚执行/正在执行)时,也会发生这种情况,并且我认为该界面还没有完全准备好收听并且仍在忙于添加新的 ipv6 地址。
使用 execSync [参见https://nodejs.org/api/child_process.html#child_process_child_process_execsync_command_options]调用 'sleep' 暂停 2 秒似乎允许收听没有错误错误:收听 EADDRNOTAVAIL。
[我认为这确实是 Ubuntu 上的 NodeJS 7.4.0 中的一个错误,因为在使用/侦听连接之前的瞬间创建 ipv4 地址时不会发生这种情况。]
例如,检查您的 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!");
});
就我而言,我通过检查目录 /tasks/options 来修复它
我发现 connect.js 文件的静态 IP 地址不正确。 我只是将其更改为正确的,并且有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.