本地部署Appwrite后React Native应用请求失败求助
解决React Native连接本地Appwrite的「Network request failed」错误
以下是针对性的排查和解决步骤:
确认本地Appwrite服务状态
先检查Appwrite是否正常运行:- 如果用Docker部署,执行
docker ps查看appwrite相关容器是否处于Up状态; - 直接在浏览器访问
http://localhost/v1/health,如果返回类似{"status":"ok"}的JSON,说明服务正常。
- 如果用Docker部署,执行
修正React Native的localhost映射
React Native模拟器/真机无法直接通过localhost访问宿主机的服务:- iOS模拟器:替换端点为
http://host.docker.internal/v1(Docker部署的Appwrite),或者宿主机的局域网IP(比如http://192.168.1.100/v1); - Android模拟器:用
http://10.0.2.2/v1(默认Android Studio模拟器),或者http://host.docker.internal/v1(Android 10及以上版本支持),同样也可以用宿主机局域网IP; - 真机测试:必须用宿主机的局域网IP,不能用localhost。
- iOS模拟器:替换端点为
检查防火墙与端口占用
- 确认宿主机防火墙没有拦截Appwrite的默认端口(80或443);
- 检查端口是否被其他程序占用,比如用
lsof -i :80(Mac/Linux)或netstat -ano | findstr ":80"(Windows)查看端口使用情况。
验证Appwrite的CORS配置
打开本地Appwrite控制台,进入对应项目的「设置」→「平台」,确保添加了React Native调试时的平台地址:- Expo项目:添加
exp://127.0.0.1:19000(根据实际调试端口调整); - 原生调试:添加Android的
http://localhost:8081或iOS的调试地址,调试阶段也可以临时勾选「允许所有来源」测试。
- Expo项目:添加
查看详细日志定位问题
- 查看Appwrite容器日志:执行
docker logs appwrite(容器名根据实际情况调整),查看是否有请求到达或错误记录; - React Native端开启网络调试:用Chrome DevTools(打开
chrome://inspect)或Flipper抓包,查看具体的网络请求错误(比如超时、403、DNS解析失败等)。
- 查看Appwrite容器日志:执行
内容的提问来源于stack exchange,提问作者user23455176
相关产品推荐
相关产品推荐

