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

Expo SDK从49升级到51后iOS打包失败求助

解决Expo SDK 51升级后Metro打包错误:require.context参数无效

针对你升级后遇到的process.env.EXPO_ROUTER_APP_ROOT导致require.context参数无效的问题,试试以下几个针对性方案:

  • 修正babel.config.js配置
    别去掉expo-router/babel插件,反而要确保它正确配置在babel插件列表里,正确的配置示例:

    module.exports = {
      presets: ['babel-preset-expo'],
      plugins: ['expo-router/babel']
    };
    
  • 明确配置EXPO_ROUTER_APP_ROOT环境变量
    这个变量必须指向你的路由根目录(通常是app/),两种配置方式二选一:

    1. 在app.json的expo.extra节点添加:
      "expo": {
        // 其他配置
        "extra": {
          "EXPO_ROUTER_APP_ROOT": "./app"
        }
      }
      
    2. 在项目根目录创建.env文件,添加:
      EXPO_ROUTER_APP_ROOT=./app
      
  • 彻底清除缓存并重建开发构建
    执行以下命令清理缓存,再重新启动Metro:

    npx expo start --clear
    

    删除旧的iOS开发构建后,重新创建:

    npx expo run:ios --development-client
    
  • 确保expo-router版本与SDK 51匹配
    检查package.json中expo-router的版本,必须是适配SDK 51的版本,执行命令更新:

    npm install expo-router@latest --save
    
  • 验证项目路由结构
    确认你配置的路由根目录(比如app/)存在,并且里面包含必要的路由文件,比如_layout.tsx,expo-router需要这个文件来初始化路由系统。

内容的提问来源于stack exchange,提问作者David.E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:19:52