NodeJS - 错误:监听 EADDRNOTAVAIL:地址不可用

新手上路,请多包涵

我正在运行一个应该托管在本地服务器上的 Node 应用程序。目前,我只发送一个明文响应。

 const http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200, {ContentType: 'text/plain'});
  res.end("test");
});

当我收听本地主机时,一切正常,我可以从浏览器发送请求。

 server.listen(3000, '127.0.0.1'); // works fine, on the same machine

但是,如果我尝试通过键入路由器的 IP 来侦听 LAN 网络上的端口,则会收到错误消息。

 server.listen(3000, '192.168.0.1'); // causes an error

 Error: listen EADDRNOTAVAIL: address not available 192.168.0.1:3
000
    at Server.setupListenHandle [as _listen2] (net.js:1253:19)
    at listenInCluster (net.js:1318:12)
    at doListen (net.js:1451:7)
    at process._tickCallback (internal/process/next_tick.js:63:1
9)
    at Function.Module.runMain (internal/modules/cjs/loader.js:7
57:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1297:8)
    at process._tickCallback (internal/process/next_tick.js:63:1
9)
    [... lines matching original stack trace ...]
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

我用我的公共 IP 地址尝试了这个,但没有成功。有什么方法可以监听 LAN 服务器上的端口,以便我可以从网络上的任何计算机发送请求?

另外,我以后希望我的应用程序可以在任何 LAN 网络上的任何计算机上运行。如何动态添加我的主机?

原文由 Nikola 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

正确的 IP 地址竟然是 192.168.0.104。

应该使用服务器机器的 IP 地址,而不是路由器的 IP 地址。

原文由 Nikola 发布,翻译遵循 CC BY-SA 4.0 许可协议

试试这个

server.listen(3000, '0.0.0.0');

您可以从其他机器访问您的节点应用程序

例如

你的局域网ip是192.168.0.101那么你可以从其他机器浏览192.168.0.101:3000

原文由 Shubham 发布,翻译遵循 CC BY-SA 4.0 许可协议

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