Node.js websocket错误“;错误:侦听EADDRNOTAVAIL错误:侦听EADDRNOTAVAIL&qu
Node.js websocket error "Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL"
应用程序在本地主机上运行良好。但当它连接到服务器时会出错
我通过端口22 连接服务器
这是错误
Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
救命!!!
-更新-
我运行netstat -tulpn | grep 22
结果:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 683/sshd
tcp6 0 0 :::22 :::* LISTEN 683/sshd
但我运行netstat -tulpn | grep 80
无显示。
有帮助吗?这是服务器故障吗?
运行netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5902 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
运行netstat -anp | grep :80
tcp 1 0 162.243.145.226:60728 91.189.94.25:80 CLOSE_WAIT 1726/ubuntu-geoip-p
tcp 1 0 162.243.145.226:47842 74.125.239.148:80 CLOSE_WAIT 8104/epiphany-brows
tcp 1 0 162.243.145.226:60727 91.189.94.25:80 CLOSE_WAIT 1417/ubuntu-geoip-p
tcp 1 0 162.243.145.226:58818 198.41.30.199:80 CLOSE_WAIT 8104/epiphany-brows
今天刚刚看到。用户在其/etc/hosts
文件中注释掉了127.0.0.1 localhost
,另一个网络服务正在将localhost
解析为与用户机器相关联的不同IP地址而非。
解决方案是将该行添加到/etc/hosts
127.0.0.1 localhost
您正在使用一个已用端口。您必须更改端口,或者必须终止正在侦听端口的进程。打开终端并写入(例如):进程的lsof -i :22
或lsof -i :80
或lsof -i :8000
和kill PID
。
如何更改total.js中的侦听PORT?
- 在/app/config或/app/config版本中或/app/config调试:
default-ip : 127.0.0.1
default-port : 8000
或
// For e.g. Heroku
default-ip : auto
default-port : auto
- 如果存在文件:release.js或debug.js:
var fs = require("fs");
var options = {};
// options.ip = "127.0.0.1";
// options.port = parseInt(process.argv[2]);
options.port = 8000;
- if仅存在index.js
// for development:
require('total.js').http('debug', { port: 8000 });
// or for production:
require('total.js').http('release', { port: 8000 });
感谢和文件:http://docs.totaljs.com
我认为您使用的是基于Unix的操作系统,如果是这样的话,那么如果没有sudo访问权限,您就无法使用1024以下的任何端口。
此外,在挖得太深之前,请检查侦听端口是否未被任何其他进程使用。
快速修复(仅用于开发):
sudo node file.js
或server.listen(3000); // any number > 1024
对于生产(从不在具有根访问权限的生产上运行节点。)
您必须使用ip表将侦听端口(例如:3000)映射到80
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
如果在多次请求后才出现此错误,则可能需要检查端口范围设置并进行调整。还有TCP超时设置,如FIN_WAIT,可以使连接保持打开的时间比预期的更长。
sysctl -a | grep net
应显示所有网络连接设置。
sysctl -a | grep port
用于端口范围设置。
tcp等待设置的sysctl -a | grep keep
。
有关设置的更多细节/建议,请参阅此处和此处(此处为mac)。
如果要修改设置,我建议您先将/etc/sysctl.conf
复制到类似/etc/sysctl.conf.bak
的文件中,然后修改该文件中的设置。它们可以通过命令行进行调整,但这是暂时的,重置它们可能会一团糟。
你可能不想在生产中这样做。
附加文档:
https://ma.ttias.be/linux-increase-ip_local_port_range-tcp-port-range/
https://easyengine.io/tutorials/linux/sysctl-conf/
端口22是为ssh保留的,在已知端口列表中,请检查http://en.wikipedia.org/wiki/Port_(computer_networking)#Common_port_numbers
我建议您在8000-9000端口上运行节点应用程序进行开发,但您可以使用注册端口范围内的任何端口。
- { [错误:侦听 EADDRINUSE :::5000]
- Google事件侦听器:未捕获类型错误:无法读取属性'addEventListener'为null
- 错误:在nodejs中侦听EADDRINUSE
- DOM 绑定错误:未定义侦听器方法
- 用于语法和内部错误的 JavaScript 事件侦听器
- 在侦听器函数 (Javascript) 中调用方法时引用错误
- 侦听 Node.js 中的 EADDRNOTAVAIL 错误
- 节点.js侦听进程错误事件
- 错误:侦听 EACCES 0.0.0.0:80 OSx 节点.js
- 基本事件侦听器抛出错误('undefined不是函数')
- 过滤集合上的Angular watch侦听器在错误的时间调用
- Node.js websocket错误“;错误:侦听EADDRNOTAVAIL错误:侦听EADDRNOTAVAIL&qu
- php2html抛出"致命错误:侦听EADDRINUSE”;
- Javascript:错误不会显示在事件侦听器上
- 可以't删除事件侦听器,不理解我的错误
- 为什么这些javascript事件侦听器可以工作,但使用了错误的值
- 如何侦听在' request.on('end', '中发生的错误
- 错误回调方法未触发.是否需要事件侦听器
- 未捕获的错误:操作缺少侦听方法React/Reflux
- “节点.js在行动”第 2 章.演示应用错误“引发错误:错误:侦听 EACCES”