本地网络上的其他人如何在我的机器上运行时访问我的 NodeJS 应用程序?

IT技术 javascript networking node.js
2021-02-21 00:53:31

我有一个非常直接的问题。我用NodeJS做了一个网页游戏,可以自己玩多个浏览器窗口并排打开成功;但是,我想知道其他本地计算机是否也可以访问并与我一起玩游戏。

我天真地尝试使用这个 url:my-ip-address:8000并且它不起作用。

6个回答

您的 node.js 服务器通常在脚本末尾确定的端口上运行。有时 3000。但可以是任何东西。其他人访问的正确方式如你所说......

http://your.network.ip.address:port/

例如

http://192.168.0.3:3000

检查您的端口是否正确 - 以及网络上的 IP 地址 - 而不是 Internet IP。

否则,端口可能被您的路由器阻止。尝试使用 8080 或 80 来解决这个问题 - 否则重新配置您的路由器。

您还应该进入您的路由器并允许您的 ip,192.168.0.3以便能够转发端口8000,这样当您的客户端连接到您的本地 ip 时,路由器将允许它们抛出。
2021-04-19 00:53:31
@RobertPitt 端口转发通常只是从外部世界到本地网络。同一本地网络中的计算机在默认(和最常见)路由器配置中没有限制。
2021-04-21 00:53:31
我切换到 8000 端口,但我可能使用了我的互联网 IP 而不是网络的 IP。当我回家并报告任何事情时,我会尝试这个。
2021-05-04 00:53:31
是否可以用一些字符串代替我的网络 ip 而不是 192.168.0.3:8000 它会是 mycoolapp.xyz ?
2021-05-05 00:53:31
@Gisborne - 你试过这个 - 事实上,你有没有回家?我们都憋着一口气在这里等着!
2021-05-13 00:53:31

我有同样的问题并解决了这个问题。就我而言,Windows 防火墙(不是路由器)阻止了主机上的 V8 机器 I/O。

  1. 转到窗口按钮
  2. 搜索“防火墙”
  3. 选择“允许程序通过防火墙通信”
  4. 单击更改设置
  5. 勾选所有“V8 Javascript 事件 I/O”或“Node.js:服务器端 Javascript”

我的猜测是“V8 Javascript 的事件 I/O”是 node.js 与外部世界通信的 I/O 进程,我们需要先释放它,然后它才能将数据包发送到本地计算机之外。启用此程序通过 Windows 防火墙进行通信后,我可以使用任何端口号进行侦听。

我的设置中有 3 个不同的 Node 列表,一个用于域/私有/公共,但其中一个缺少左侧的复选框。这解决了我的问题。
2021-04-18 00:53:31
只是想补充一点,在我的情况下,Node.js: Server-Side JavaScript最初并未在应用程序列表中列出。我必须选择Allow another app...并明确选择 nodejs.exe
2021-04-19 00:53:31
有趣的是,“Evented I/O for V8 Javascript”指定的应用程序是 Adob​​e 的 Brackets 编辑器添加的 Node 的独立版本。如果你不使用 Brackets,最好不要允许这个应用程序。如果您从命令行或其他 IDE(如 Webstorm)运行 Node,则您在此处寻找的应用程序是“Node.js:服务器端 JavaScript”
2021-04-30 00:53:31

如果您使用的是路由器,则:

  1. 替换server.listen(yourport, 'localhost');server.listen(yourport, 'your ipv4 address');

    在我的机器上是

     server.listen(3000, '192.168.0.3');
    
  2. 确保您的端口转发到您的 ipv4 地址。

  3. 在 Windows 防火墙上,勾选 Node.js:Server-side JavaScript。

我简直不敢相信这是这么简单。:) 谢谢。
2021-05-03 00:53:31
只有这个答案对我有用。您能否添加评论,说明localhost在这种情况下与 ipv4 地址的不同之处,例如192.168.0.3. 谢谢 :)
2021-05-07 00:53:31
@kaushalpranavlocalhost指向 IP 地址127.0.0.1,它是任何机器的 IP 地址。同一台机器中的程序可以访问托管在127.0.0.1. 要将服务器暴露给该路由器网络中的其他计算机,您必须使用路由器分配的 IP;那是192.168.0.x或类似的东西。在此阶段,只能从路由器网络中的任何计算机访问服务器。但是,该服务器尚不可用于 Internet。
2021-05-14 00:53:31

我的Angular Node Server(v6.10.3) 在 WINdows 10 中设置时遇到了类似的问题http://localhost:4201在 localhost 中运行良好。http://{ipaddress}:4201不能在本地网络中的其他机器上工作。

为此,我更新了ng serve这样的

//Older ng serve in windows command Prompt

ng serve --host localhost --port 4201

//Updated ng serve
//ng serve --host {ipaddress} --port {portno}
ng serve --host 192.168.1.104 --port 4201

完成此修改后,能够访问我在网络中其他机器上的应用程序调用此 url

http://192.168.1.104:4201  
//http://{ipaddress}:4201
这很好用。我现在可以从我的 Mac 访问我的 Parallels Windows VM,谢谢!
2021-05-04 00:53:31

没有人提到过的一个技巧是记住将应用程序托管在 LAN 可访问的地址上,0.0.0.0而不是默认的本地主机上。与默认的本地主机地址 ( 127.0.0.1)相比,Mac 和 Linux 上的防火墙对此地址的严格程度较低

例如,

gatsby develop --host 0.0.0.0

yarn start --host 0.0.0.0

npm start --host 0.0.0.0

然后,您可以通过输入ifconfigipconfig在终端中访问要连接的地址然后尝试左侧不以.255结尾的 IP 地址之一.0