Expo开发的React Native真机应用无法连接本地API求助
解决Expo React Native真实设备连接本地API的网络错误问题
以下是针对你遇到的问题的排查和解决步骤:
确认设备与电脑在同一局域网
确保你的Android设备和开发电脑连接的是同一个Wi-Fi网络,且两者IP处于同一网段(比如电脑是10.2.0.56,手机IP应为10.2.x.x)。如果电脑用有线网络,需确保有线网络和手机Wi-Fi在同一局域网内。修改本地API服务的绑定地址
多数后端服务默认仅绑定127.0.0.1(仅本机可访问),需改为绑定0.0.0.0以允许局域网内其他设备访问:- Node.js/Express示例:
app.listen(8000, '0.0.0.0', () => { console.log('服务运行在 http://0.0.0.0:8000'); }); - Django示例:
python manage.py runserver 0.0.0.0:8000 - Flask示例:
app.run(host='0.0.0.0', port=8000)
- Node.js/Express示例:
检查电脑防火墙设置
Windows防火墙可能拦截局域网设备对8000端口的请求,可暂时关闭防火墙测试。若问题解决,需在防火墙中添加入站规则,允许8000端口的TCP连接。用手机浏览器测试API可达性
在Android设备的浏览器中直接访问http://10.2.0.56:8000/:- 如果浏览器无法访问,说明问题出在网络或后端服务,与React Native无关;
- 如果浏览器能正常返回数据,再排查RN端的配置。
配置Android网络安全策略(Android 9+)
Android 9及以上默认禁止明文HTTP请求,需添加网络安全配置允许指定IP的明文请求:- 在
android/app/src/main/res/xml目录下创建network_security_config.xml文件,内容如下:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">10.2.0.56</domain> </domain-config> </network-security-config> - 在
AndroidManifest.xml的<application>标签中添加配置引用:<application ... android:networkSecurityConfig="@xml/network_security_config">
- 在
尝试Expo的Tunnel模式
改用expo start --tunnel命令启动项目,Tunnel模式通过Expo服务器转发请求,无需依赖局域网配置,适合快速验证API是否正常。验证axios请求配置
确认请求的IP、端口与后端服务完全一致,同时检查后端服务是否正常运行(无崩溃、端口未被占用)。
内容的提问来源于stack exchange,提问作者John Mark
相关产品推荐
相关产品推荐

