Expo项目安卓端无法请求本地3001端口json-server数据该如何解决
Expo安卓端访问本地json-server失败解决方案
问题核心原因:安卓设备/模拟器的localhost指向自身而非开发电脑,且安卓高版本默认禁用明文HTTP请求,加上json-server默认仅本地可访问,三者共同导致请求失败。
1. 调整json-server启动参数
默认启动的json-server仅绑定本地127.0.0.1地址,同局域网设备无法访问,启动时需指定绑定所有网卡:
json-server --watch db.json --port 3001 --host 0.0.0.0
同时确认开发电脑和安卓设备连接同一WiFi,关闭代理、VPN,且电脑防火墙放行3001端口。
2. 正确配置baseUrl
首先查询开发电脑的局域网IPv4地址:
- Windows系统:cmd执行
ipconfig,查看WLAN/以太网对应的IPv4地址,例如192.168.3.22 - Mac/Linux系统:终端执行
ifconfig或ip addr查询
替换baseUrl配置:
export const baseUrl = "http://你查出来的局域网IP:3001/";
如果使用安卓模拟器测试,也可以直接用模拟器专属的本地映射地址:
export const baseUrl = "http://10.0.2.2:3001/";
3. 开启安卓明文HTTP请求权限
安卓9及以上系统默认禁止非HTTPS的明文请求,需修改项目根目录app.json配置,在expo.android节点下添加权限:
{ "expo": { "android": { "usesCleartextTraffic": true } } }
修改完成后重启Expo服务,清除安卓端Expo Go缓存后再打开项目。
4. 验证连通性
先在安卓设备自带浏览器输入完整的接口地址,例如http://你的局域网IP:3001/leaders,如果能正常返回JSON数据,说明网络链路正常,再检查Redux Thunk中的请求路径拼写是否正确即可。
内容的提问来源于stack exchange,提问作者krishna choudhary
相关产品推荐
相关产品推荐

