Node.js与React Native Expo中Axios网络错误求助(Postman测试正常)
解决Expo Android设备调用Node/Express API的Axios网络错误问题
核心排查方向及修复步骤
替换正确的服务器地址
10.0.2.2仅适用于Android模拟器对本地主机的映射,若使用物理Android设备,必须替换为电脑的局域网IP地址:- Windows:打开命令提示符执行
ipconfig,查看无线网卡的IPv4地址(如192.168.1.100) - Mac/Linux:打开终端执行
ifconfig或ip addr,查找对应网卡的inet地址 - 修改Axios请求地址为
http://你的局域网IP:5000/register
- Windows:打开命令提示符执行
确保Express服务器允许局域网访问
检查服务器启动代码,监听地址必须设为0.0.0.0而非localhost,否则仅本地能访问:// 正确写法 app.listen(5000, '0.0.0.0', () => { console.log('Server running on port 5000'); });关闭或配置电脑防火墙
电脑防火墙可能拦截5000端口的局域网请求:- 临时关闭防火墙测试是否能正常请求
- 若测试有效,在防火墙规则中添加允许5000端口的入站规则
修正Axios代码的错误用法
原代码中await response.json()是Fetch API的用法,Axios已自动解析响应体,这行代码会导致额外错误,修正后的代码:try { const userdata = { username, email, password }; const response = await axios.post("http://你的局域网IP:5000/register", userdata); console.log("Registration data :", response.data); console.log(response.data.message); navigation.navigate("Home"); } catch (error) { console.error("Register error: ", error.response?.data || error.message); }确认Expo应用的网络权限
Expo默认会在AndroidManifest.xml中添加INTERNET权限,若手动修改过配置,确保存在以下权限声明:<uses-permission android:name="android.permission.INTERNET" />
内容的提问来源于stack exchange,提问作者DHIRAJ
相关产品推荐
相关产品推荐

