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

React Native热重载失效求助:iOS模拟器代码修改无更新

解决React Native iOS模拟器热重载无响应+WebSocket错误问题

看起来你的问题核心是RN本地服务器和iOS模拟器之间的WebSocket通信失败,导致热重载完全失效,而且新项目正常说明你的开发环境本身没问题,问题出在现有项目的缓存或配置上。我给你几个针对性的解决方案,按顺序试:

1. 彻底清除所有RN相关缓存(最常用的修复手段)

先把所有可能的缓存清干净,这往往能解决大部分奇怪的热重载问题:

  • 打开终端,依次执行这些命令:
    watchman watch-del-all
    rm -rf $TMPDIR/react-*
    rm -rf node_modules && npm install
    npm start -- --reset-cache
    
    执行完最后一条命令后,重新在模拟器里重载(Cmd+R)试试。

2. 修复模拟器和RN服务器的网络连接

WebSocket错误大概率是连接不上服务器导致的,试试:

  • 打开iOS项目的AppDelegate.m文件,找到jsCodeLocation这一行,把localhost换成你电脑的局域网IP地址(比如192.168.1.100),然后重新编译运行项目。
    示例:
    // 原来的代码
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.bundle?platform=ios&dev=true"];
    // 修改后
    jsCodeLocation = [NSURL URLWithString:@"http://192.168.1.100:8081/index.bundle?platform=ios&dev=true"];
    
  • 检查模拟器的网络设置:打开模拟器的Settings -> Wi-Fi,确保连接的网络和电脑一致,并且没有开启代理。

3. 排查端口占用和服务器进程

有时候8081端口被其他程序占用,或者RN服务器进程异常:

  • 检查8081端口是否被占用:
    lsof -i :8081
    
    如果有输出,用kill -9 <进程ID>杀掉占用端口的进程。
  • 彻底关闭所有RN相关进程:
    ps aux | grep react-native
    
    把列出的进程全部kill掉,然后重新启动npm start。

4. 重置模拟器的网络状态

你已经试过重置模拟器内容,但可以再试试:

  • 关闭模拟器,打开Xcode -> Window -> Devices and Simulators,选中你的模拟器,右键选择Erase All Content and Settings,然后重新编译运行项目。

为什么新项目正常?

因为新项目用的是默认配置,没有缓存积累,也没有可能被修改过的配置文件。而现有项目可能因为长期开发积累了缓存,或者某个配置文件(比如AppDelegate、metro.config.js)被无意中修改,导致WebSocket连接失败。

如果以上方法都没用,你可以试试把现有项目的ios目录删掉,然后重新执行react-native eject(注意备份配置),重新生成iOS项目文件,再编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:12