如何修复@nrwl/run-commands报错:detox build -c ios.sim.retail.debug命令失败
报错核心原因
该错误为苹果硅(M1/M2/M3)系列Mac设备上的常见编译问题,核心是iOS模拟器架构与项目配置的EXCLUDED_ARCHS规则不匹配,导致xcodebuild执行失败,进而触发nrwl运行命令报错。
修复步骤
- 修正Xcode项目架构配置
打开Xcode工作区./apps/retail-mobile/ios/app.xcworkspace,选中应用主target,进入Build Settings页面,找到Excluded Architectures配置项,在Debug模式的Any iOS Simulator SDK选项下确认已添加arm64;同时切换到Pods项目,所有依赖target的对应配置也要同步添加arm64,避免第三方依赖编译不兼容。 - 调整Detox构建参数
打开项目根目录下的Detox配置文件(通常为.detoxrc.js、detox.config.js),找到ios.sim.retail.debug对应的build配置,在原命令末尾追加ONLY_ACTIVE_ARCH=NO参数,修改后的构建命令参考:export EXCLUDED_ARCHS=arm64 && ENVFILE=.env.dev.detox xcodebuild -workspace ./apps/retail-mobile/ios/app.xcworkspace -scheme app -configuration Debug -sdk iphonesimulator -derivedDataPath ./apps/retail-mobile/ios/build -quiet ONLY_ACTIVE_ARCH=NO - 清理缓存重新编译
依次执行以下命令清理所有旧编译缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ./apps/retail-mobile/ios/build cd ./apps/retail-mobile/ios && pod deintegrate && pod install --repo-update
清理完成后重新运行detox build -c ios.sim.retail.debug验证修复效果。
- 兼容终端运行模式
如果此前用Rosetta转译模式运行终端,关闭终端的使用Rosetta打开选项,重启终端后重新执行编译命令即可。
内容的提问来源于stack exchange,提问作者fypnlp
相关产品推荐
相关产品推荐

