React Native中Axios Post请求遇AxiosError: Network Error求助
解决Expo Go安卓设备上Axios POST的Network Error问题
以下是针对该问题的具体排查和解决步骤:
- 确认设备与服务器同局域网:确保安卓手机和运行后端服务的电脑连接同一WiFi网络,不同网段设备无法互相访问。
- 修改后端监听地址:后端服务不能仅监听
127.0.0.1,需改为0.0.0.0才能允许局域网内其他设备访问。以Node.js为例:app.listen(3000, '0.0.0.0', () => { console.log('服务运行在0.0.0.0:3000'); }); - 验证局域网IP正确性:
- Windows:打开命令提示符输入
ipconfig,找到当前WiFi的IPv4地址 - Mac/Linux:终端输入
ifconfig或ip addr,找到对应WiFi接口的inet地址
确保Axios请求URL使用该IP,例如http://192.168.1.100:3000/api/save
- Windows:打开命令提示符输入
- 检查防火墙与端口开放:
- 临时关闭电脑防火墙测试,或在防火墙规则中允许后端服务的端口通过
- 确认后端服务端口未被其他程序占用
- 用浏览器测试API可达性:在安卓设备浏览器中直接访问API地址(如
http://192.168.1.100:3000/api/save),发送POST请求验证是否能获取响应。若浏览器也无法访问,说明问题出在后端网络配置而非Axios - 简化Axios请求排查:先发送最简请求排除数据或配置问题:
axios.post('http://192.168.1.100:3000/api/save', { test: 'data' }) .then(res => console.log(res)) .catch(err => console.log(err)); - 检查CORS配置:后端需配置CORS允许跨域请求,例如Node.js使用
cors包:const cors = require('cors'); app.use(cors()); // 生产环境建议限制特定IP - 确认Expo Go模式:若使用Expo隧道服务(如ngrok),确保隧道处于活跃状态;优先使用局域网IP访问,比隧道更稳定
内容的提问来源于stack exchange,提问作者Hayk Paytyan
相关产品推荐
相关产品推荐

