我正在运行一个应该托管在本地服务器上的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地址不成功。有没有办法监听局域网服务器上的端口,以便我可以从网络上的任何计算机发送请求?
此外,我希望我的应用程序以后可以在任何局域网上的任何计算机上运行。如何动态添加主机?
5条答案
按热度按时间uqdfh47h1#
试试这个
server.listen(3000, '0.0.0.0');
您可以从其他计算机访问节点应用程序
例如
你的局域网ip是192.168.0.101然后你可以浏览192.168.0.101:3000从其他机器
xpcnnkqh2#
我得到了这个错误,问题是我有一个VPN连接
vs91vp4v3#
小心你的IP有时候会变。当我使用Node时,我必须检查Shell中的
ipconfig
。我希望它能帮助如果别人有同样的问题...lyfkaqu14#
正确的IP地址实际上是192.168.0.104。
应使用服务器计算机的IP地址,而不是路由器的IP地址。
esyap4oy5#
另一个原因
有时,当您在容器中运行应用程序并尝试在容器中使用您的私有IP(例如www.example.com)时,会发生这种情况192.168.10.2。由于容器是一个隔离的环境,它不知道您的私有IP。
解决方案
您应该使用0.0.0.0:PORT来运行node js应用程序,然后将此端口绑定到您的私有IP。例如,在docker compose中,你应该这样做: