React Native应用登录功能网络请求失败求助(附代码)
解决React Native实体手机调用API出现TypeError: Network request failed的问题
确认设备与服务器处于同一局域网
你的API地址使用的是局域网IP(10.7.165.91),必须保证实体手机和运行Node.js服务器的电脑连接同一个WiFi网络,否则手机无法访问局域网内的服务器。验证服务器IP与端口的可访问性
- 在服务器电脑上执行
ipconfig(Windows)或ifconfig(Linux/macOS),确认IPv4地址确实是10.7.165.91,避免IP地址变更导致访问失败。 - 在手机浏览器中尝试访问
http://10.7.165.91:8090,如果无法打开,说明服务器端口未开放或IP地址有误。
- 在服务器电脑上执行
开放服务器防火墙端口
服务器电脑的防火墙可能拦截了8090端口的请求:- Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」,选择端口,输入8090,允许连接。
- Linux/macOS:使用
ufw allow 8090(Ubuntu)或对应防火墙命令开放端口。
处理Android明文HTTP限制
Android 9(API 28)及以上默认禁止明文HTTP请求,需修改配置:- 打开
android/app/src/main/AndroidManifest.xml - 在
<application>标签中添加android:usesCleartextTraffic="true",示例:<application ... android:usesCleartextTraffic="true">
- 打开
处理iOS ATS限制
iOS默认要求使用HTTPS,允许HTTP访问需修改Info.plist:- 打开
ios/[你的项目名]/Info.plist - 添加以下配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
注意:正式发布应用时建议仅允许指定域名的HTTP访问,不要全局开启。
- 打开
优化错误排查
在你的fetch请求的catch块中添加更详细的错误日志,方便定位问题:.catch(error => { console.log('Network Error:', error.message); console.log('Error Stack:', error.stack); });
内容的提问来源于stack exchange,提问作者Nguyễn Duy Khang
相关产品推荐
相关产品推荐

