【问题标题】:NodeJS - Error: listen EADDRNOTAVAIL: address not availableNodeJS - 错误:监听 EADDRNOTAVAIL:地址不可用
【发布时间】:2020-04-07 18:24:45
【问题描述】:

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

const http = require('http');

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

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

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 网络上的任何计算机上运行。如何动态添加我的主机?

【问题讨论】:

  • 您尝试过 IP 0.0.0.0(将侦听所有 IP)吗? server.listen(3000, '0.0.0.0');
  • 你需要设置你的服务器ip而不是你的路由器ip,然后你需要在你的路由器中打开一个端口,并从你的路由器添加一个端口转发到你的服务器。例如,如果您的服务器正在侦听端口 80,并且您的路由器中有端口 5458 正在侦听,您应该重定向到您的服务器 ip 加上它的端口,例如 (192.168.0.x:80)...
  • @DavidAgustinMelgar 我现在如何知道哪个端口在我的路由器中监听?我在哪里做重定向?我的应用程序中应该包含哪些确切代码?更清晰的解释会有所帮助。谢谢
  • 你需要打开它,进入路由器设置中的端口转发,在那里你需要将路由器端口设置为机器IP,例如router:8080 => 192.168.0.4:80 8080就是一个例子。这是为了从 Internet 访问您 LAN 中的网络服务器。

标签: node.js lan


【解决方案1】:

试试这个

server.listen(3000, '0.0.0.0');

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

例如

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

【讨论】:

  • 这仍然只听我的 localhost (127.0.0.1:3000),但不听 192.168.0.101:3000
  • 您使用的是什么操作系统? 192.168.0.101是你机器的ip地址吗?
  • 我的 IP 地址现在似乎是 192.168.0.104,它现在正在使用该地址!谢谢!
【解决方案2】:

正确的IP地址竟然是192.168.0.104

【讨论】:

    【解决方案3】:

    我收到此错误,问题是我连接了 VPN

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案4】:

    小心您的 IP。 有时它会改变。当我使用 Node 时,我必须检查 Shell 中的 ipconfig...我希望它可以帮助其他人遇到同样的问题...

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 2019-05-26
      • 2011-10-13
      • 2017-10-12
      • 2021-02-11
      • 2020-11-09
      相关资源
      最近更新 更多