Mac端React Native iOS本地构建报/bin/sh文件不存在错误
Mac端React Native CLI iOS构建报错
/bin/sh: 目标路径不存在 修复方案 问题基本信息
- 报错信息:
/bin/sh: /Users/{userName}/Desktop/{name}/Test No such file or directory - 触发场景:本地运行React Native CLI搭建的iOS项目时触发
- 环境信息:
- React Native版本:0.68.0
- React版本:17.x.x
- Mac系统版本:11.67
- Xcode版本:13.1
- 已尝试无效操作:删除Pods文件夹重装依赖、切换Podfile中Flipper的开启/关闭状态
根因说明
该报错本质是Xcode执行构建阶段的shell脚本时,路径解析断裂,无法定位到目标执行文件,和Flipper依赖、Pods安装完整性无直接关联,此前尝试的操作未命中根因所以无法解决问题。
修复步骤
按优先级依次操作,每步完成后可尝试重新构建,命中问题点即可直接恢复:
- 检查并修正项目全路径
该报错最常见诱因是项目所在路径包含空格、中文或特殊字符:shell默认将空格作为参数分隔符,如果你的项目文件夹、上层父文件夹名称带空格(比如文件夹名为RN Test),脚本会把空格后的内容识别为独立路径,直接触发找不到文件的错误。
把项目从上层目录到项目文件夹本身的所有名称修改为纯英文、无空格、无特殊符号的格式,比如原路径/Desktop/测试项目/RN Demo/Test修改为/Desktop/RNProject/RNDemo/Test。修改完成后在Xcode中按Command + Shift + K清理构建缓存,重新运行项目即可。 - 修正Xcode构建脚本的路径引用格式
如果路径本身无异常,打开ios目录下的.xcworkspace文件,选中项目主Target,进入Build Phases标签页,依次检查所有带Shell执行逻辑的阶段(重点检查Bundle React Native code and images、[CP] Copy Pods Resources两个板块):所有引用路径变量的位置,都要用双引号把路径包裹起来,例如原写法$SRCROOT/../node_modules/react-native/scripts/react-native-xcode.sh需要修改为"$SRCROOT/../node_modules/react-native/scripts/react-native-xcode.sh",避免不可见特殊字符导致路径解析失败。 - 全量清理缓存后重装依赖
如果以上两步操作后仍报错,在项目根目录执行以下命令清理所有缓存,重新关联依赖:
命令执行完成后重启Xcode,重新打开# 清理RN侧缓存 watchman watch-del-all rm -rf node_modules yarn install # 清理iOS侧构建缓存与pod依赖 cd ios rm -rf Pods Podfile.lock build pod deintegrate pod install --repo-update cd .. # 清理Xcode全局衍生缓存 rm -rf ~/Library/Developer/Xcode/DerivedData/*.xcworkspace文件构建即可。
避坑提示
React Native iOS构建对路径格式敏感度很高,日常开发中不要在项目存放路径里使用中文、空格、特殊转义字符,能规避80%的无厘头构建报错。
内容的提问来源于stack exchange,提问作者Mosin92
相关产品推荐
相关产品推荐

