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/),两种配置方式二选一:- 在
app.json的expo.extra节点添加:"expo": { // 其他配置 "extra": { "EXPO_ROUTER_APP_ROOT": "./app" } } - 在项目根目录创建
.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
相关产品推荐
相关产品推荐

