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

Expo React Native应用生产环境Fetch API失效,开发环境正常

React Native Expo生产APK网络请求问题排查与解决

问题背景

开发的React Native Expo应用在开发环境(安卓设备通过Expo Go连接开发服务器)运行正常,但使用eas build打包生产APK后,Fetch API完全无法工作。登录时界面卡在加载状态,既无成功反馈也无错误提示,服务器日志甚至没有收到请求记录。开发模拟器中Fetch曾报“Network Request Failed”,但Expo Go模式下正常。API地址为https://api.deardiary.tech/,SSL证书无问题。

登录核心代码:

const login = async () => {
  try{ 
    setLoading(true); 
    const res = await fetch(`${BASE_URI}/login`, { 
      method : 'POST', 
      headers: { 
        'Accept': 'application/json', 
        'Content-Type': 'application/json' 
      }, 
      credentials : 'include', 
      body : JSON.stringify({ name, password }) 
    }); 
    const data = await res.json(); 
    if(data.success === true){ 
      await AsyncStorage.setItem('name', name); 
      setLoading(false); 
      navigation.navigate('/', {state : data.data}); 
    } else{ 
      setLoading(false); 
      alert(data.message); 
    } 
  } catch(e){ 
    alert(e.response.data.message); 
    setLoading(false); 
  }
}

一、安卓手机端设置调整

  • 开启网络访问权限:进入手机「设置」→「应用管理」→ 找到你的应用 →「权限管理」,确保「移动网络」和「WLAN」权限已开启。
  • 关闭VPN/代理服务:如果手机正在使用VPN或代理,可能会阻断应用的网络请求,关闭后重试。
  • 禁用省流量模式:部分手机的省流量模式会限制应用网络访问,进入「设置」→「网络和互联网」→「流量节省」,关闭该功能或把应用加入白名单。
  • 解除后台联网限制:部分定制安卓系统(如MIUI、ColorOS)会限制应用后台联网,在应用权限设置中找到「后台联网权限」并开启。

二、代码与配置修复(关键)

  • 修复错误捕获逻辑:当前catch块直接访问e.response.data.message,若请求未发出(纯网络错误),e.response为undefined,会导致代码卡死,无法执行setLoading(false),这才是界面卡在加载的核心原因。修改为:
catch(e){ 
  alert(e.message || '网络请求失败'); 
  setLoading(false); 
}
  • 确认安卓权限配置:在app.json的android.permissions中添加网络权限,Expo生产构建需要明确声明:
"android": {
  "permissions": [
    "INTERNET",
    "ACCESS_NETWORK_STATE"
  ]
}
  • 测试凭证配置兼容性:暂时移除credentials: 'include'后测试请求是否正常,若正常,需确保服务器配置了Access-Control-Allow-Credentials: true和正确的Access-Control-Allow-Origin(不能用通配符*)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:43:13