Win10下Node.js服务无法通过局域网IP访问仅localhost可访问如何解决
解决方案
1. 优先排查业务代码启动逻辑
你当前配置里写死了监听0.0.0.0但实际监听127.0.0.1,90%以上的概率是你导出的这个start方法根本没有被实际调用,或者你的项目所用的框架/脚手架有独立的服务启动配置,覆盖了你写的这段逻辑:
- 如果你用的是前端开发框架(Vue CLI、Umi、Next.js、Nuxt等),需要去对应框架的配置文件修改监听地址:
- Vue CLI:修改
vue.config.js中devServer.host为0.0.0.0,或启动时加参数npm run serve -- --host 0.0.0.0 - Next.js:启动时加参数
npm run dev -- -H 0.0.0.0 - Umi:修改
.umirc中devServer.host为0.0.0.0
- Vue CLI:修改
- 检查项目启动入口,确认是否有其他位置调用了
server.listen方法,且没有传0.0.0.0作为第二个参数。
2. 用最简脚本验证Node.js本身能力
先退出所有代理、VPN软件,再新建一个test.js文件写入以下内容:
const http = require('http') const server = http.createServer((req, res) => { res.writeHead(200) res.end('测试访问成功') }) server.listen(4000, '0.0.0.0', () => { console.log('测试服务已启动') })
执行node test.js启动服务后,在cmd执行netstat -ano | findstr :4000查看监听地址:
- 如果显示
0.0.0.0:4000,说明Node.js本身没有问题,问题完全出在你的原有项目的启动逻辑上,回到第一步排查即可。 - 如果还是显示
127.0.0.1:4000,再检查Windows系统级配置:查看C:\Windows\System32\drivers\etc\hosts文件是否有将0.0.0.0强制指向127.0.0.1的规则,删除对应规则后重试。
3. 验证访问
确认服务监听0.0.0.0:4000后,你已经配置了防火墙入站规则,同一局域网内设备直接访问http://192.168.X.X:4000即可正常访问。
内容的提问来源于stack exchange,提问作者Abdallah Obaid
相关产品推荐
相关产品推荐

