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

iOS模拟器中React Native应用安装后Fetch仅首次可用,重启后请求失败

iOS模拟器中React Native应用安装后Fetch仅首次可用,重启后请求失败

嘿,我之前也碰到过类似的棘手问题,结合社区里的常见排查思路,给你几个方向试试:

  • 先确认网络连通性
    重启模拟器后,先别急着打开APP,在模拟器的Safari里直接访问你的Render服务器API地址,看看能不能正常返回数据。如果Safari都打不开,那大概率是模拟器网络和服务器的连接出了问题——比如Render免费版服务长时间闲置会休眠,重启APP的请求刚好赶上它唤醒的间隙;或者模拟器的DNS解析出了问题,试试把请求地址里的域名换成服务器的公网IP再测试。

  • 完善Fetch的错误捕获和日志
    你说去掉超时就会卡住,说明请求一直在等待响应但没收到结果。可以把错误处理写得更详细点,方便定位问题:

    try {
      const response = await fetch('你的服务器API地址', {
        method: 'GET',
        timeout: 10000, // 保留超时,避免无限等待
      });
      if (!response.ok) {
        throw new Error(`HTTP状态异常: ${response.status}`);
      }
      const data = await response.json();
      // 处理数据逻辑
    } catch (error) {
      console.error('请求失败完整信息:', error);
      // 这里可以给用户加个弹窗提示,或者重试机制
    }
    

    看看控制台里的错误详情,除了“Network request failed”有没有更具体的提示,比如连接被拒绝、DNS失败之类的。

  • 检查服务器的CORS和运行状态
    确认Render服务器在你重启APP时是正常运行的,免费版服务如果15分钟没请求会自动休眠,第一次请求会唤醒,但后续如果间隔太久又会休眠,这时候重启APP的请求可能刚好卡在唤醒过程中。另外,跨域设置也可能导致这种情况,开发环境可以临时在服务器响应头里设置Access-Control-Allow-Origin: *,测试是否是跨域问题导致的请求失败。

  • 清理缓存或重置模拟器
    有时候Expo的开发缓存会搞出奇怪的问题,试试用expo start --clear命令重启开发服务器,然后重新在模拟器上安装APP。如果还是不行,干脆重置模拟器的所有内容:打开模拟器顶部菜单的Hardware -> Erase All Content and Settings,再重新安装测试。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:09:40