执行npx react-native run-ios报错:无名为IPhone 15的模拟器
解决
npx react-native run-ios提示"No simulator available with name IPhone 15"的问题 问题背景
升级Xcode到15.x、iOS模拟器到17.0后,执行npx react-native run-ios时出现找不到iPhone 15模拟器的错误,但xcrun simctl list devices明确显示该模拟器存在,且通过Xcode可以正常构建运行应用。使用指定UDID的命令npx react-native run-ios --udid <设备UDID>也报相同错误,已尝试重装Xcode、清理node_modules和pods等操作均无效,当前使用react-native 0.70.6、react 18.1.0。
根本原因
react-native 0.70.x版本的run-ios命令在模拟器检测逻辑上存在兼容性问题,不支持Xcode15引入的iOS17模拟器的名称或UDID匹配,官方在0.71.x及以上版本修复了该问题。
解决方案
方案1:升级React Native到兼容版本(推荐)
将react-native升级到0.71.13或更高版本(该版本开始正式支持Xcode15),具体步骤:
- 按照官方指引执行升级操作(可使用
react-native upgrade或手动更新package.json中的依赖版本) - 重新安装项目依赖:
npm install - 重新安装iOS pods:
cd ios && pod install && cd .. - 再次执行指定模拟器的运行命令:
npx react-native run-ios --simulator "iPhone 15"
方案2:临时修改本地RN代码(应急用)
如果暂时无法升级RN版本,可以修改模拟器检测逻辑的核心文件:
- 打开项目路径下的
node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js - 找到名称匹配的代码段,将严格匹配改为大小写不敏感匹配,示例修改:
原代码:
修改为:if (simulator.name === simulatorName) { return simulator; }if (simulator.name.toLowerCase() === simulatorName.toLowerCase()) { return simulator; } - 检查UDID匹配逻辑,确保字符串对比无额外格式处理
- 保存文件后,重新执行
npx react-native run-ios --udid <你的iPhone 15模拟器UDID>
方案3:拆分构建与启动流程
若上述方法均无效,可拆分操作步骤:
- 通过Xcode打开项目,点击构建按钮将应用安装到目标模拟器
- 执行命令启动JS服务:
npx react-native start - 在模拟器中手动打开应用,即可正常加载JS bundle
内容的提问来源于stack exchange,提问作者Ilan Rosenbaum
相关产品推荐
相关产品推荐

