You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native调用Express JS MongoDB RESTful API遇网络请求失败求助

解决React Native调用Express API时的Network request failed错误

我来帮你排查这个问题——你已经用Express+MongoDB写好了能在Postman正常返回数据的/GetAllUsers接口,但React Native调用时报错,大概率是这几个常见的坑导致的,咱们一个个来排查:

1. 本地API的访问地址不对

Postman直接跑在电脑上,用localhost能访问到你的Express服务,但React Native模拟器/真机有自己的独立网络环境:

  • 安卓模拟器:不能用localhost,要换成http://10.0.2.2:你的端口号/GetAllUsers(10.0.2.2是安卓模拟器专门映射到电脑本地的地址)
  • iOS模拟器:可以直接用http://localhost:你的端口号/GetAllUsers,或者换成电脑的局域网IP
  • 真机测试:必须用电脑的局域网IP(比如http://192.168.1.100:你的端口号/GetAllUsers),而且手机和电脑要连同一个WiFi

2. CORS跨域限制

Postman不受浏览器的CORS规则约束,但React Native在调试模式下有时候还是会因为服务没配置CORS而请求失败。给你的Express项目加个CORS中间件就能解决:
首先安装依赖:

npm install cors

然后在Express入口文件里配置:

const cors = require('cors');
const express = require('express');
const app = express();

// 开发环境可以直接允许所有跨域请求,生产环境建议限制指定域名
app.use(cors());

// 接着挂载你的路由
app.use('/api', router); // 假设你的路由挂载在/api路径下

3. 设备网络权限不足

  • 安卓:打开android/app/src/main/AndroidManifest.xml,确保添加了必要的网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • iOS:如果你的API用的是HTTP协议(不是HTTPS),需要在ios/你的项目名/Info.plist里添加配置,允许不安全的网络请求:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

注意:生产环境一定要用HTTPS,这个配置只适合开发阶段临时使用。

4. Express服务监听地址错误

确保你的Express服务不是只监听localhost,而是监听0.0.0.0,这样局域网内的设备才能访问到它:

app.listen(3000, '0.0.0.0', () => {
  console.log('Server running on http://0.0.0.0:3000');
});

按这个顺序排查下来,基本就能解决Network request failed的问题了。

内容的提问来源于stack exchange,提问作者user6571878

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:26:59