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

添加expo-updates后iOS构建版本无法加载资产的问题

Expo 46 + expo-updates 0.14.7 iOS构建后资产加载失败问题排查与解决

问题核心

使用Expo ^46.0.0并引入expo-updates ~0.14.7后,通过eas build -p ios构建的iOS包出现资产加载失败问题:

  • 开发环境运行正常,仅生产构建包失效
  • 即使移除代码中所有expo-updates相关实现,只要package.json保留该依赖,问题依旧存在
  • 资产加载器位于项目根目录(非src文件夹)

可能原因与对应解决方案

1. 版本兼容性不匹配

Expo 46官方适配的expo-updates稳定版本为0.14.6,~0.14.7属于非适配小版本升级,其中的资产打包逻辑可能与Expo 46的底层机制冲突。

  • 操作:降级expo-updates到适配版本
    npm install expo-updates@~0.14.6 --save
    # 或 yarn add expo-updates@~0.14.6
    
    之后重新执行eas build -p ios测试。

2. expo-updates默认配置覆盖资产打包规则

expo-updates会自动修改Expo的资产打包策略,即使未启用更新功能,其默认配置可能未将根目录的资产加载器纳入打包范围。

  • 操作:在app.json/app.config.js中显式声明资产路径
    {
      "expo": {
        "assetBundlePatterns": [
          "**/*", // 确保所有目录下的资产被打包
          "./[你的资产加载器文件名]" // 单独指定根目录的加载器文件
        ]
      }
    }
    

3. EAS构建缓存残留问题

EAS构建的缓存可能保留了旧的依赖配置,导致修改依赖后仍沿用错误的打包逻辑。

  • 操作:强制清理缓存后构建
    eas build -p ios --clear-cache
    

4. 根目录文件的生产环境路径解析问题

开发环境中Node的路径解析逻辑与iOS生产包的沙盒环境不同,expo-updates可能改变了根目录文件的实际访问路径,导致加载失败。

  • 操作:将资产加载器迁移至src目录,同步修改代码中的引用路径,确保生产环境能正确解析。

验证流程

  1. 调整依赖或配置后,先执行expo prebuild --clean清理本地构建缓存
  2. 运行expo run:ios --configuration Release模拟生产环境测试,确认问题是否解决
  3. 本地测试正常后,再执行带缓存清理的EAS构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:30:50