我在 运行 简单节点服务器上获取 `getAddrInfo ENOTFOUND localhost`,即使 /etc/hosts 中存在本地主机(MacOS El Capitan)

I am getting `getAddrInfo ENOTFOUND localhost` on running simple node server even though localhost is present in /etc/hosts (MacOS El Capitan)

我在设置和 运行 一个普通的节点 js 服务器时发生了一件非常奇怪的事情。

当我 运行 node server.js 时,出现以下错误:

Server running at http://localhost:1337/
events.js:160
  throw er; // Unhandled 'error' event
  ^
Error: getaddrinfo ENOTFOUND localhost
       at errnoException (dns.js:28:10)
       at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

当我在浏览器中打开 http://localhost:1337/ 时,显示 page does not exist

当我 运行 sudo node server.js 时,它 运行 没有任何错误,我可以访问我的网站 https://localhost:1337

这是我的 /etc/hosts 文件:

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost

我的server.js:

// Require what we need
var http = require("http");
// Build the server
var app = http.createServer(function(request, response {
    response.writeHead(200, {
        "Content-Type": "text/plain"
    });
response.end("Hello world!\n");
});
// Start that server, baby
app.listen(1337, "localhost");
console.log("Server running at http://localhost:1337/");

其他详情

  1. OS: Mac OS (埃尔卡皮坦)
  2. Node JS 版本:6.10.3(全局安装)
  3. NPM 版本:4.5.0(全局安装)

以下是我的问题

  1. 为什么上面的 server.js 文件可以使用管理员访问权限但不能作为普通用户使用?
  2. 全局安装的节点是否仅适用于管理员访问权限?
  3. Mac OS 中除了 /etc/hosts 之外还有什么可以影响 DNS 查找的吗?我已经刷新了我的 DNS 缓存并重新启动了我的 OS 以确保没有使用旧的 DNS 查找。

我已通过编辑文件 /etc/hosts

修复了同样的错误

添加了行:

##
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost