React Native应用Xcode运行卡启动页,CLI运行正常问题求助
可能的原因及排查方向
我之前也碰到过类似的情况,结合社区的常见问题和自己的排查经验,整理了几个可能的原因,你可以逐一排查:
Xcode未自动启动Metro或环境变量配置缺失
命令行执行react-native run-ios时,会自动启动Metro服务器并给Xcode注入必要的环境变量(比如NODE_BINARY、RCT_METRO_PORT)。但直接在Xcode里运行时,这些操作不会自动完成:- 先手动在终端启动Metro:
npx react-native start - 检查Xcode的Scheme配置:打开Xcode → 顶部菜单栏
Product→Scheme→Edit Scheme→ 切换到Run标签 →Arguments栏,确认Environment Variables里有NODE_BINARY(指向你的本地node路径,比如/usr/local/bin/node)和RCT_METRO_PORT=8081,如果没有就手动添加。
- 先手动在终端启动Metro:
缓存堆积导致的加载异常
各种缓存堆积很容易引发这类启动卡住的问题,建议依次清理:- 清除Metro缓存:
npx react-native start --reset-cache - 清除Xcode的Derived Data:打开Xcode →
Preferences→Locations→ 点击Derived Data后的箭头打开文件夹,删除所有内容后重启Xcode - 清理iOS端Pods缓存:终端进入项目的
ios目录,执行pod deintegrate && pod install,回到根目录后再尝试构建
- 清除Metro缓存:
Xcode的构建目标或模式配置错误
- 确认Xcode顶部的设备选择和你命令行指定的一致(比如都是iPhone 8模拟器),真机运行的话要确保设备已信任开发者证书,
Signing & Capabilities配置正确 - 检查Scheme是否为
Debug模式:Release模式下不会加载Metro依赖图,自然会卡在启动页,切换回Debug模式再试
- 确认Xcode顶部的设备选择和你命令行指定的一致(比如都是iPhone 8模拟器),真机运行的话要确保设备已信任开发者证书,
Metro默认端口被占用
命令行启动时会自动处理端口冲突,但Xcode运行时如果默认的8081端口被其他程序占用,就会卡住加载依赖图:- 检查端口占用情况:
lsof -i :8081 - 杀掉占用端口的进程:
kill -9 <查到的PID> - 重新启动Metro后再在Xcode运行
- 检查端口占用情况:
React Native与Xcode版本不兼容
部分RN版本对Xcode版本有明确要求,比如RN 0.70+需要Xcode 14.1及以上版本。可以对照你使用的RN版本官方文档,确认Xcode版本是否匹配,不兼容的话要么升级Xcode,要么降级RN到适配的版本
内容的提问来源于stack exchange,提问作者user8685433
相关产品推荐
相关产品推荐

