我正在运行一个应该托管在本地服务器上的 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 许可协议
正确的 IP 地址竟然是 192.168.0.104。
应该使用服务器机器的 IP 地址,而不是路由器的 IP 地址。