我有一个非常直截了当的问题。我用NodeJS做了一个网页游戏,我可以自己成功地玩多个浏览器窗口并排打开它;但是,我想知道其他本地机器是否可以与我一起访问和玩游戏。
我天真地尝试使用此网址:my-ip-address:8000
,但它无效。
答案 0 :(得分:45)
你的node.js服务器通常在脚本末尾确定的端口上运行。有时3000.但可以是任何东西。其他人访问的正确方法就是你所说的......
http://your.network.ip.address:port/ 例如 http://192.168.0.3:3000
检查您是否有正确的端口 - 以及网络上的IP地址 - 而不是互联网IP。
否则,路由器可能阻止了端口。尝试使用8080或80来解决此问题 - 否则请重新配置路由器。
答案 1 :(得分:23)
我有同样的问题并解决了问题。就我而言,Windows防火墙(而不是路由器)阻止了主机上的V8机器I / O.
我的猜测是" V8 Javascript"的偶数I / O;是node.js与外界通信的I / O进程,我们需要先释放它才能将数据包发送到本地计算机之外。启用此程序以通过Windows防火墙进行通信后,我可以使用任何端口号进行监听。
答案 2 :(得分:16)
如果您使用的是路由器:
将server.listen(yourport, 'localhost');
替换为server.listen(yourport, 'your ipv4 address');
在我的机器中
server.listen(3000, '192.168.0.3');
确保您的端口转发到您的ipv4地址。
答案 3 :(得分:12)
在我的Angular节点服务器(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
执行此修改后,能够在网络bt中的其他计算机上访问我的应用程序,并调用此URL
http://192.168.1.104:4201
//http://{ipaddress}:4201
答案 4 :(得分:4)
该端口可能被本地防火墙或路由器阻止。很难说没有细节。
但是有一个简单的解决方案,您不必混淆防火墙规则,将节点作为特权进程在端口80上运行等等......
查看 Localtunnel 。它是一个很棒的Ruby脚本/服务,它允许您在几秒钟内在互联网上提供任何本地端口。它对于生产设置肯定没有用,但是为了与同事一起尝试游戏,它应该可以正常工作!
答案 5 :(得分:2)
并且不要忘记改变Index.html的代码:
<script src="http://192.168.1.4:8000/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
var socket = io.connect('http://192.168.1.4:8000');
祝你好运!
答案 6 :(得分:2)
没有人提及的一个技巧是记住将应用程序托管在可通过LAN访问的地址0.0.0.0上,而不是默认的本地主机上。与默认的localhost地址(172.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
然后您可以通过在终端中输入ifconfig
或ipconfig
来访问要连接的地址。然后尝试使用左侧不以.255
或.0
结尾的IP地址之一
答案 7 :(得分:1)
const express = require('express');
var app = express();
app.listen(Port Number, "Your IP Address");
// e.g.
app.listen(3000, "192.183.190.3");
如果您的Windows用户可以使用ipconfig
,则可以在cmd中键入ifconfig
来获取IP地址。
答案 8 :(得分:0)
默认情况下,节点将在运行它的主机公开的每个IP地址上运行。你不需要做任何特别的事情。您已经知道服务器在特定端口上运行。您可以通过在该计算机上的浏览器上使用该IP地址来证明这一点:
http://my-ip-address:port
如果这样做不起作用,则可能是您的IP地址错误。
答案 9 :(得分:0)
我有这个问题。解决方案是允许node.js通过服务器的防火墙。
答案 10 :(得分:0)
这对我有用,我认为这是涉及最少设置的最基本解决方案:
ipconfig
获取IP地址。
注意此IP地址。它应类似于“ 192.168.1.2”,它是“ IPv4地址”字段右侧的值,如下所示:无线局域网适配器Wi-Fi:
特定于连接的DNS后缀。 :
链接本地IPv6地址。 。 。 。 。 :ffff :: ffff:ffff:ffff:ffad%14
IPv4地址。 。 。 。 。 。 。 。 。 。 。 :192.168.1.2
子网掩码 。 。 。 。 。 。 。 。 。 。 。 :255.255.255.0
npm start <IP obtained in step 1:3000>
例如npm start 192.168.1.2:3000
<your_ip:3000>
,即192.168.1.2:3000
,您将看到您的网站。答案 11 :(得分:0)
将此代码放入您的server.js中:
app.set('port', (80))
app.listen(app.get('port'), () => {
console.log('Node app is running on port', app.get('port'))
})
之后,如果您无法访问网络上的应用,请禁用防火墙,如下所示:
答案 12 :(得分:0)
在尝试了许多解决方案和大量研究之后,我对以下内容进行了操作,以确保可以从同一网络中的其他计算机访问我的本地主机。我没有使用IPAddress作为参数来启动服务器来侦听此问题中其他人建议的方法。我执行以下操作以确保可以从同一本地网络上的其他计算机访问我的本地节点js服务器。我的节点服务器正在Windows 10计算机上运行。
请参见所附的屏幕截图:
这些更改之后,我可以使用http:// IPAddress:Port /访问我的本地主机 谢谢。
答案 13 :(得分:0)
ngrok
允许您使用自定义转发引用在 Internet 上公开端口:
$ npx ngrok http 8000
答案 14 :(得分:-5)
确保服务器正在运行,方法是使用&#39; npm start&#39;或者&#39; nodemon&#39;在命令行窗口中。