React Native模拟器BUNDLE加载完成后卡住的问题排查求助
React Native 0.54.4 BUNDLE Stuck at 100% After Build Completion
看起来你碰到了React Native 0.54.4版本里Metro Bundler加载完成后卡住的典型问题,结合你已经尝试的禁用调试、重装node_modules、删除ios/build目录这些操作,我再给你几个针对性的排查和解决方向:
1. 彻底清除Metro Bundler缓存并手动启动
有时候缓存残留是导致加载卡住的核心原因,你可以执行一套更彻底的缓存清理命令:
watchman watch-del-all && rm -rf node_modules && npm install && rm -rf /tmp/metro-* && rm -rf /tmp/haste-map-*
清理完成后,不要直接用react-native run-ios启动,先单独启动Metro Bundler:
react-native start --reset-cache
等Metro显示“Loading dependency graph, done.”后,再打开另一个终端窗口运行react-native run-ios,观察是否还会卡住。
2. 找到React Native启动相关的日志位置
你提到不清楚日志位置,这里分两类给你说明:
- Metro Bundler日志:就是你运行
react-native start时终端的实时输出,或者通过Xcode启动项目时,Xcode的Build Output面板里也会包含打包相关的日志; - iOS端启动日志:打开Xcode的
Console面板(顶部菜单栏选择View > Debug Area > Activate Console),选择对应的模拟器或真机,就能看到App启动时的系统和RN相关日志;另外项目的ios/{你的项目名}/Logs目录下也会存储Xcode的构建日志。
3. 排查iOS端的额外配置问题
- 检查
Info.plist中的网络权限:RN 0.54版本的Metro Bundler默认使用HTTP服务,需要确保iOS允许本地HTTP请求。你可以在Info.plist中添加NSAppTransportSecurity字典,里面设置NSAllowsArbitraryLoads为YES(或者更严谨地添加针对localhost的例外); - 更换测试环境:尝试切换到不同的iOS模拟器(比如从iPhone 14换成iPhone SE),或者直接用真机测试,排除模拟器本身的资源占用或兼容性问题;
- 检查模拟器网络:确保模拟器和你的电脑在同一网络环境下,有时候模拟器的网络异常会导致和Metro Bundler的连接中断,看起来像是卡住。
4. 版本相关的潜在修复
0.54.4是比较老旧的RN版本,Metro Bundler当时存在一些已知的卡顿问题,你可以尝试升级项目中的Metro相关依赖(注意要和RN 0.54.4兼容),比如查看package.json里的metro-react-native-babel-preset、metro等包,更新到对应兼容的小版本。
内容的提问来源于stack exchange,提问作者Ed McKee
相关产品推荐
相关产品推荐

