过去两年我一直在本地主机的 1337 端口上开发 Node.js 应用程序,没有任何问题,如下所示。
$ node app
App started on port 1337
今天我想测试一下默认端口 80 的运行情况,所以我这样做了:
$ sudo node app
App started on port 80
但此后我的网络就变得一团糟。现在我无法访问任何本地地址,包括 localhost。当我 ping localhost 时,它指向一些奇怪的公共 IP 地址 (218.38.137.125),而不是 127.0.0.1。
$ ping localhost
PING localhost.local (218.38.137.125): 56 data bytes
...
218.38.137.125 不是我的公共 IP 地址。
当我通过 telnet 连接时,我看到了相同的错误 IP 地址:
$ telnet localhost
Trying 218.38.137.125...
telnet: connect to address 218.38.137.125: Connection refused
telnet: Unable to connect to remote host
我的/etc/hosts如下:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
有人能指出哪里出了问题吗?
我完全没有办法猜测,甚至无法继续我的工作。
答案1
我找到了问题所在。它恰好是/etc/hosts文件。
我使用 Sublime Text 2 编辑了它,但这恰好是一个错误的选择,因为它添加了CR 线路终端器。
$ file -b /etc/hosts
ASCII English text, with CR line terminators
正如所提到的https://discussions.apple.com/message/20103434#20103434,它必须只是ASCII 英文文本。
因此,复制/etc/hosts内容并使用“vi”覆盖此文件,解决了问题。现在:
$ file -b /etc/hosts
ASCII English text
我希望这也能帮助其他人。