React+Express局域网跨设备请求超时(ERR_CONNECTION_TIMED_OUT)求助
解决局域网内跨设备无法访问Express服务器的问题
核心排查方向
你的问题是本地能正常请求,但局域网设备请求超时,这说明不是CORS问题(CORS会报跨域错误而非超时),重点要从网络连通性、服务器监听配置入手。
1. 修改Express服务器的监听地址
当前代码中appExpress.listen(3030)默认只绑定127.0.0.1(本地回环地址),只有服务器本机能访问。需要改为监听所有网络接口:
appExpress.listen(3030, '0.0.0.0', () => { console.log('ouvindo 3030 em todas as interfaces'); });
0.0.0.0表示服务器会监听所有可用的网卡IP,包括局域网IP,这样其他设备才能通过服务器的局域网地址连接。
2. 确认服务器的局域网IP正确性
客户端代码中写的192.168.170.204必须是服务器电脑的真实局域网IP:
- Windows:打开命令提示符,执行
ipconfig,找到当前网络适配器的IPv4地址 - macOS/Linux:打开终端,执行
ifconfig或ip addr,找到对应的局域网IP
如果服务器IP是DHCP自动分配的,可能会变动,需要确保客户端请求的地址和服务器当前IP一致。
3. 验证局域网内的连通性
在其他设备上执行以下测试:
- Ping服务器IP:
ping 192.168.170.204,如果不通,说明两台设备不在同一子网,或者路由器有隔离设置 - 测试端口连通性:用
telnet 192.168.170.204 3030(Windows需要先启用telnet功能),或者curl http://192.168.170.204:3030,如果连接失败,说明端口未开放或服务器监听地址错误
4. 检查防火墙的入站规则
即使开放了端口,也要确保规则配置正确:
- Windows防火墙:进入「高级设置」→「入站规则」,找到3030端口的规则,确认允许连接,且应用到「专用网络」(局域网)
- Linux:执行
sudo ufw allow 3030/tcp或sudo firewall-cmd --add-port=3030/tcp --permanent && sudo firewall-cmd --reload
5. 检查路由器设置
- 关闭路由器的AP隔离功能(部分路由器默认开启,会阻止同一WiFi下设备互相访问)
- 确认服务器和其他设备连接的是同一个WiFi或同一局域网网段(比如都是192.168.1.x)
6. 额外注意事项
- 避免使用可能被占用的端口(比如80、443之外的常用端口,不过你已经换过3030,应该没问题)
- 如果服务器使用了VPN,可能会导致局域网IP被隐藏,需要关闭VPN测试
内容的提问来源于stack exchange,提问作者Bruno Henrique
相关产品推荐
相关产品推荐

