[乐意黎原创] Error: listen EADDRNOTAVAIL 119.23.235.10:3000 at Object.exports._errnoException (util.js:10

来源:互联网 发布:金融程序员 编辑:程序博客网 时间:2024/06/08 00:49

在使用云主机部署Nodejs项目测试时, 总是在抛错.

[root@xx app]# node app-test.js

events.js:182
      throw er; // Unhandled 'error' event
      ^


Error: listen EADDRNOTAVAIL 119.23.235.102:3000
    at Object.exports._errnoException (util.js:1016:11)
    at exports._exceptionWithHostPort (util.js:1039:20)
    at Server.setupListenHandle [as _listen2] (net.js:1290:19)
    at listenInCluster (net.js:1355:12)
    at doListen (net.js:1481:7)
    at _combinedTickCallback (internal/process/next_tick.js:105:11)
    at process._tickCallback (internal/process/next_tick.js:161:9)
    at Function.Module.runMain (module.js:607:11)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3
[root@xx app]# ^C
[root@xx app]# node t.js
Server running at http://172.18.110.1:3000/
http://172.18.110.1:3000/

^C



119.23.235.102 公网IP

172.18.110.1 私网IP


经过对比, 发现是由于云主机使用了公网的IP, 于是改用了私有IP, 问题解决!


------------------------------------------

2017-06-15
 
CentOS7系统默认的防火墙服务并不是iptables喔。 
 
您可以先用命令 systemctl status firewalld 来检查一下当前的防火墙状态, 
 
如果是运行状态,您可以 systemctl stop firewalld 的命令来停止防火墙的服务, 
 
如果确认是防火墙的问题,可以用 systemctl disable firewalld 的命令来禁止防火墙的服务。


参考: 

https://bbs.aliyun.com/read/176995.html

最后怎么解决的?呵呵,说是灵光一现也好,说是死马当活马医也好,我突然想到了hosts文件,路由出问题了? 
  为了保险我查了一下:cat /etc/hosts,只显示了本地localhost、127.0.0.1和阿里云内网IP的绑定,没有外网地址的配置。 
  为了不干扰其它端口上运行的程序,我没有修改hosts文件,而是更改了app.js代码: 
  createServer(...).listen(80,"阿里云ECS外网IP"); 


输入“i”,进入编辑模式,将以下项目文件内容粘贴到文件中。使用“Esc”按钮,退出编辑模式,输入“:wq”,回车,保存文件内容并退出。

项目文件内容:

  1. const http = require('http');
  2. const hostname = 'ECS公网IP地址';
  3. const port = 3000;
  4. const server = http.createServer((req, res) => {
  5. res.statusCode = 200;
  6. res.setHeader('Content-Type', 'text/plain');
  7. res.end('Hello World\n');
  8. });
  9. server.listen(port, hostname, () => {
  10. console.log(`Server running at http://${hostname}:${port}/`);
  11. });

注:项目文件内容中的’ECS公网IP地址’处需填写实际的ECS公网IP;项目文件内容中的3000为端口号,可以自行定义。




乐意黎原创


2017-06-15

阅读全文
0 0
原创粉丝点击