node 使用net模块时Error: getaddrinfo ENOTFOUND localhost

mac 10.15.3 ,nodev13.6.0,运行net模块时报错
server.js文件

//server.js
var net = require('net');
var server = net.createServer(function(connection) { 
   console.log('client connected');
   connection.on('end', function() {
      console.log('客户端关闭连接');
   });
   connection.write('Hello World!\r\n');
   connection.pipe(connection);
});
server.listen(8080, function() { 
  console.log('server is listening');
});

执行以上服务端代码:

$ node server.js
server is listening   # 服务已创建并监听 8080 端口
// client.js
var net = require('net');
var client = net.connect({port: 8080}, function() {
   console.log('连接到服务器!');  
});
client.on('data', function(data) {
   console.log(data.toString());
   client.end();
});
client.on('end', function() { 
   console.log('断开与服务器的连接');
});

执行以上客户端的代码时报如下错误

$ node client.js       
events.js:298
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND localhost
    at GetAddrInfoReqWrap.onlookup \[as oncomplete\] (dns.js:64:26)
Emitted 'error' event on Socket instance at:
    at emitErrorNT (internal/streams/destroy.js:84:8)
    at processTicksAndRejections (internal/process/task\_queues.js:84:21) {
  errno: -3008,
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'localhost'
}  

没有搜到答案,本地hosts文件配置了localhost 映射

$ sudo cat /etc/hosts  
127.0.0.1               localhost
255.255.255.255 broadcasthost
::1                             localhost
fe80::1%lo0             localhost
阅读 5.7k
1 个回答

文件类型显示Unix可执行文件
删除hosts文件,重新添加即可
参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题