无法在 LAN 网络上托管 Express.js 应用程序
Posted
技术标签:
【中文标题】无法在 LAN 网络上托管 Express.js 应用程序【英文标题】:Trouble hosting Express.js app on LAN network 【发布时间】:2020-11-24 03:37:58 【问题描述】:我一直在尝试将我的 windows labtop 中的 express.js 服务器托管到我的局域网上,以便路由器上的其他设备也可以访问该站点,这是我的麻烦:
let express = require("express")
let app = express()
app.get("/", (req, res) =>
res.send("Hello")
)
app.listen(80, "the ip I got")
我知道所有这些代码都是正确的,但是我将 ip 放入listen(),我如何获取我的 ip 是我要去 cmd.exe 并输入 ipconfig,然后我正在使用“IPv4 地址”下列出的地址。如果有人可以帮助我获得正确的 IP 地址来托管在我的局域网上,那就太好了。
当我在该地址上托管服务器时,它充当本地主机,并且当我在浏览器中访问 IP 地址时工作,但不适用于连接到路由器的其他设备。
【问题讨论】:
尝试使用 ip0.0.0.0
监听所有设备,同时检查您的 Windows 防火墙或路由器是否不会阻止到您机器的流量。我假设您可以绑定到端口 80,但是尝试将端口更改为大于 1024 的端口,例如 3000 并检查它是否有任何改变。
@Anastazy 我已将端口更改为 3000,监听 0.0.0.0 没有任何错误。我使用什么 IP 地址连接到我的 express 服务器?
0.0.0.0
地址只是意味着您的服务器绑定并侦听所有可用接口,因此请使用路由器分配给该计算机的 IP 地址(通常 DHCP 服务器会自动分配 IP 地址)。如您所说,您可以使用 IPv4 部分中的ipconfig
命令检查 IP(如果您有多个网卡,请确保您正在查看正确的接口)。您还可以在路由器设置中检查分配给设备的 IP 地址(通常您可以通过在浏览器中输入 192.168.1.1 来登录路由器)。
【参考方案1】:
使用此代码:
let port = 3000
app.listen(port, () =>
console.log("Iam ready at port : " + port)
)
而不是:app.listen(80, "the ip I got")
【讨论】:
【参考方案2】: 首先,为您的笔记本电脑分配静态 IP。 然后改代码如下
let express = require("express")
let app = express()
app.get("/", (req, res) =>
res.send("Hello")
)
app.listen(80,()=>
console.log("Server Started")
)
- 然后在浏览器中尝试 HTTP://localhost。它应该可以工作,然后尝试使用您的静态 IP 使用其他设备进行访问。如果不起作用,请检查防火墙设置并允许端口 80
【讨论】:
以上是关于无法在 LAN 网络上托管 Express.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
当两者都连接到同一个热点时,客户端无法访问服务器上托管的网站