You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS模拟器Hot Reload失效 不手动打包无法获取最新JS变更

React Native iOS模拟器无法同步JS变更、热重载失效解决方案

该问题本质是Debug模式下iOS项目没有连接本地Metro服务,而是直接读取了预生成的main.jsbundle静态包,所以只有手动执行打包命令后变更才会生效,可按以下步骤排查修复:

  • 检查Xcode构建配置
    • 打开iOS目录下的.xcworkspace(若未集成Pod则打开.xcodeproj),选中项目主Target,进入Build Phases标签页,找到Bundle React Native code and images脚本项,确认脚本未强制开启生产打包逻辑,默认Debug模式下该脚本会跳过静态包生成、走Metro服务拉取实时代码。
    • 进入Build Settings标签页,搜索DEAD_CODE_STRIPPING配置项,Debug模式下将值设置为NO,死代码剥离开启会阻断React Native调试模式与Metro的连接。
  • 检查模拟器与Metro服务状态
    • 启动模拟器后按cmd + D唤出调试菜单,确认Disable Fast Refresh未被勾选。
    • 检查8081端口是否被其他进程占用,占用则关闭对应进程后执行命令重启Metro并清理缓存:npx react-native start --reset-cache
  • 全量清理缓存重新构建
    如果以上配置均正常,按顺序执行全量清理操作:
    1. 关闭Xcode、模拟器,终止当前运行的Metro服务
    2. 清理本地临时缓存:rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/metro-*
    3. 重新安装依赖:rm -rf node_modules && npm install(yarn用户替换为yarn install)
    4. 清理iOS构建与Pod缓存:cd ios && rm -rf Pods Podfile.lock build && pod install && cd ..
    5. 重新启动项目:先运行Metro服务npx react-native start --reset-cache,再新开终端执行iOS启动命令npx react-native run-ios

修复后Debug模式下无需手动执行npx react-native bundle相关打包命令,Metro会自动同步JS变更、触发热重载。

内容的提问来源于stack exchange,提问作者cfoster5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:04