我正在运行一个应该托管在本地服务器上的节点应用程序。 目前,我只发送明文回复。
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 网络上的任何计算机上运行。如何动态添加我的主机?
试试这个
server.listen(3000, '0.0.0.0');
您可以从其他机器访问您的节点应用程序
例如
你的局域网IP是192.168.0.101那么你可以从其他机器浏览192.168.0.101:3000
我收到此错误,问题是我连接了 VPN
小心您的 IP。 有时它会改变。当我使用 Node 时,我必须检查 Shell 中的
ipconfig
...我希望如果其他人遇到同样的问题,它可以有所帮助...
有时,当您在容器内运行应用程序并尝试在容器内使用您的私有 IP(例如 192.168.10.2)时,就会发生这种情况。由于容器是一个隔离的环境,它不知道你的私有IP。
您应该使用 0.0.0.0:PORT 来运行 Node js 应用程序,然后将此端口绑定到您的私有 IP。例如,在 docker compose 中,你应该这样做:
ports:
- "192.168.10.4:PORT:PORT"
正确的IP地址实际上是192.168.0.104。
应使用服务器计算机的 IP 地址,而不是路由器的 IP 地址。
尝试检查端口和 IP 组合。我刚刚在这里回答了 sls 的问题。但同样也适用于此。
如果是端口问题,可以通过杀死特定端口来修复
杀死 $(lsof -ti:PORT)
** 将 PORT 更改为特定端口号
是否是ip问题,同样可以验证该ip是否仍然分配给所考虑的机器。
ifconfig | grep
此命令适用于 mac 机器,但类似的变体也可用于 Linux 机器。
如果这对我的情况有帮助,问题是我正在 MacOS 上工作,我忘记将本地主机添加到主机文件中,如下所示:
127.0.0.1 mydomain.localhost