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

niwlg2el  于 2023-06-22  发布在  Node.js
关注(0)|答案(5)|浏览(303)

我正在运行一个应该托管在本地服务器上的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地址不成功。有没有办法监听局域网服务器上的端口,以便我可以从网络上的任何计算机发送请求?
此外,我希望我的应用程序以后可以在任何局域网上的任何计算机上运行。如何动态添加主机?

uqdfh47h

uqdfh47h1#

试试这个
server.listen(3000, '0.0.0.0');
您可以从其他计算机访问节点应用程序
例如
你的局域网ip是192.168.0.101然后你可以浏览192.168.0.101:3000从其他机器

xpcnnkqh

xpcnnkqh2#

我得到了这个错误,问题是我有一个VPN连接

vs91vp4v

vs91vp4v3#

小心你的IP有时候会变。当我使用Node时,我必须检查Shell中的ipconfig。我希望它能帮助如果别人有同样的问题...

lyfkaqu1

lyfkaqu14#

正确的IP地址实际上是192.168.0.104。
应使用服务器计算机的IP地址,而不是路由器的IP地址。

esyap4oy

esyap4oy5#

另一个原因

有时,当您在容器中运行应用程序并尝试在容器中使用您的私有IP(例如www.example.com)时,会发生这种情况192.168.10.2。由于容器是一个隔离的环境,它不知道您的私有IP。

解决方案

您应该使用0.0.0.0:PORT来运行node js应用程序,然后将此端口绑定到您的私有IP。例如,在docker compose中,你应该这样做:

ports:
   - "192.168.10.4:PORT:PORT"

相关问题