升级Expo SDK 43后M1 Mac出现Metro bundler transformFile未定义报错
Apple M1设备升级Expo SDK 43后Metro transformFile报错解决方案
该报错是Apple M1芯片对旧版Metro bundler的兼容性缺陷导致的,Expo SDK 43默认绑定的Metro版本未适配ARM架构,因此英特尔芯片Mac运行同项目不会触发问题。可按以下步骤依次排查修复:
- 安装M1原生适配的Watchman
环境信息中未检测到Watchman,M1设备运行Expo项目需安装ARM架构适配的Watchman,使用M1原生Homebrew(默认安装路径/opt/homebrew/bin/brew)执行命令:brew install watchman - 强制锁定兼容版Metro依赖
在项目package.json文件中添加版本锁定配置,修复旧版Metro的兼容问题:
如果使用Yarn作为包管理器,添加resolutions字段:
如果使用NPM v8及以上版本作为包管理器,添加{ "resolutions": { "metro": "0.66.2", "metro-resolver": "0.66.2" } }overrides字段:
配置完成后删除项目根目录的{ "overrides": { "metro": "0.66.2", "metro-resolver": "0.66.2" } }node_modules文件夹、yarn.lock或package-lock.json锁文件,重新执行yarn install或npm install安装依赖。 - 清理缓存重启项目
执行命令清空Expo缓存并启动服务:npx expo start --clear
如果仍报错,进入ios目录清理构建缓存后重新安装Pod依赖:cd ios rm -rf build pod install cd .. - 兜底方案:Rosetta模式运行终端
若上述操作均无效,可右键点击访达中的终端应用,勾选「使用Rosetta打开」,重启终端后重新执行依赖安装和项目启动命令即可正常运行。
内容的提问来源于stack exchange,提问作者Andrii khmelovskyi
相关产品推荐
相关产品推荐

