M1芯片环境React Native iOS构建PhaseScriptExecution错误65求助
排查解决步骤
按以下优先级逐一验证,大部分同场景问题可在前3步解决:
1. 优先修复M1芯片架构兼容问题
这是Apple Silicon设备上RN iOS构建报65错误的最高频诱因:
- 给Xcode开启Rosetta转译:打开访达进入「应用程序」目录,找到Xcode.app右键选择「显示简介」,勾选「使用Rosetta打开」,关闭所有已打开的Xcode窗口后重启Xcode,按快捷键
Cmd + Shift + K清理构建缓存。 - 给终端开启Rosetta转译:同样在应用程序目录找到你日常使用的终端(系统自带终端/iTerm2等),右键「显示简介」勾选「使用Rosetta打开」,重启终端后进入项目根目录,执行以下命令重装依赖:
依赖重装完成后再尝试执行rm -rf node_modules yarn.lock package-lock.json # 用yarn就执行yarn install,用npm就执行npm install yarn install cd ios pod deintegrate pod install --repo-update cd ..npx react-native run-ios。
2. 定位Bundle阶段的具体报错根因
错误码65是xcodebuild的通用构建失败码,必须拿到具体报错才能精准解决:
- 进入项目的
ios目录,双击打开MCompass.xcworkspace文件,注意不要打开后缀为.xcodeproj的文件,否则会出现依赖找不到的问题。 - 在Xcode顶部工具栏选择要运行的模拟器目标,点击左上角构建按钮(三角形图标)触发构建。
- 构建失败后点击左侧导航栏最右侧的「Report Navigator」(对话气泡形状图标),选中最新的构建失败记录,在日志列表里找到
PhaseScriptExecution Bundle React Native code and images条目,展开日志拉到最顶部找红色标注的具体错误,对应修复即可:- 若报错提示
node: command not found:选中项目Target -> 进入「Build Phases」标签 -> 找到Bundle React Native code and images脚本块,在脚本第一行添加export NODE_BINARY=$(which node),保存后重新构建。 - 若报错提示权限拒绝:回到项目根目录执行
sudo chmod -R 777 node_modules ios赋予读写权限,清理Xcode缓存后重跑。 - 若报错提示某个RN脚本文件不存在:重新执行依赖安装命令补全缺失文件即可。
- 若报错提示
3. 修复Node 18版本的兼容问题
你当前使用的Node v18.4.0和0.69版本以下的React Native存在OpenSSL兼容问题,会直接导致Bundle脚本执行失败:
- 方案一(推荐):用nvm切换到Node 16.x长期支持版,执行命令:
切换完成后重新安装依赖、重装pod即可。nvm install 16 nvm use 16 nvm alias default 16 - 方案二:不想降级Node的话,找到前面提到的
Bundle React Native code and images脚本块,在脚本开头添加export NODE_OPTIONS=--openssl-legacy-provider,保存后重新构建。
4. 清理全链路缓存排除脏数据干扰
如果以上步骤都没解决,执行以下命令清理所有构建、运行缓存后重试:
watchman watch-del-all rm -rf ~/Library/Developer/Xcode/DerivedData/* rm -rf /tmp/metro-* # 启动metro服务时重置缓存 yarn start --reset-cache
新开一个终端窗口,在项目根目录重新执行npx react-native run-ios即可。
内容的提问来源于stack exchange,提问作者Br X
相关产品推荐
相关产品推荐

