Flutter+NodeJS API物理设备运行报错“Connection timed out”求助
解决方案:Flutter物理设备连接NodeJS API超时问题
1. 确认设备与服务器在同一网络
物理设备必须和运行NodeJS API的电脑连接同一个Wi-Fi网络,禁止使用手机流量,同时注意部分路由器存在有线无线隔离机制,避免电脑连有线、设备连无线的情况。
2. 修改NodeJS API的监听地址
默认NodeJS仅监听localhost(127.0.0.1),仅本机可访问,需修改为监听所有网络地址:
// 原监听代码(仅本机可访问) app.listen(3000, 'localhost', () => { ... }); // 修改为监听所有地址 app.listen(3000, '0.0.0.0', () => { console.log('API running on http://0.0.0.0:3000'); });
3. 检查电脑防火墙设置
- Windows:打开「Windows Defender防火墙」,确认NodeJS程序被允许通过防火墙,或临时关闭防火墙测试(测试后务必重新开启)。
- macOS:进入「系统设置」→「网络」→「防火墙」,开启NodeJS的网络访问权限。
- Linux:执行
ufw allow 3000(替换为你的API端口)开放端口,或临时关闭防火墙验证。
4. 验证物理设备与电脑的网络连通性
在手机上使用ping工具(如Termux或专用ping应用)测试电脑IPv4地址,例如ping 192.168.1.100。若ping不通,检查路由器的AP隔离设置(部分路由器默认开启,会阻止设备间通信),需关闭该功能。
5. 修正Flutter代码中的API地址
确保Flutter代码使用电脑的真实IPv4地址,而非模拟器专用的10.0.2.2:
// 替换为你的电脑IPv4地址 const baseUrl = 'http://192.168.1.100:3000';
6. 跨网络场景的端口转发设置(可选)
若物理设备与电脑不在同一Wi-Fi,需在路由器后台设置端口转发,将API端口(如3000)映射到电脑的IPv4地址。建议先在同一网络环境下测试通后再尝试跨网络连接。
内容的提问来源于stack exchange,提问作者SomaAz
相关产品推荐
相关产品推荐

