React Native代码修改不生效求助(GCP虚拟机+SSH隧道开发场景)
解决GCP虚拟机上React Native代码修改不生效问题
1. 检查SSH隧道端口转发配置
- 确保SSH隧道完整转发Metro及调试相关端口,执行以下命令建立隧道(替换为你的GCP虚拟机信息):
ssh -L 8081:localhost:8081 -L 9090:localhost:9090 your-gcp-username@gcp-vm-public-ip - 本地验证端口连通性:在Mac终端执行
telnet localhost 8081,能连通说明转发正常,否则检查虚拟机防火墙或SSH配置。
2. 修正Metro服务绑定地址
- 在GCP虚拟机上启动Metro时,必须绑定
0.0.0.0允许外部请求访问,启动命令改为:npx react-native start --host 0.0.0.0 - 在安卓设备的开发者菜单中,设置Debug server host & port for device为
localhost:8081(因为隧道已将虚拟机8081映射到本地)。
3. 彻底清理缓存与重新打包
- 在GCP虚拟机上执行全套缓存清理命令:
watchman watch-del-all rm -rf node_modules && npm install rm -rf /tmp/metro-* - 重启Metro后,强制重新打包部署:
npx react-native run-android --no-packager - 卸载设备上的旧APP,确保安装的是最新打包版本。
4. 确认热重载触发逻辑
- 打开安卓设备开发者菜单,确保Enable Hot Reloading和Enable Fast Refresh均已开启。
- 修改代码后,手动触发刷新(摇晃设备点Reload,或在Metro终端按两次R键),避免依赖自动监听(云磁盘可能存在文件变动通知延迟)。
- 若虚拟机磁盘不支持文件监听,启动Metro时添加
--no-watch参数,修改代码后手动重启Metro。
5. 验证Bundle内容一致性
- 在本地Mac终端执行以下命令,检查返回的bundle是否为最新代码:
curl http://localhost:8081/index.bundle?platform=android - 若返回内容是新的但设备显示旧内容,在设备开发者菜单点击Clear Cache,或直接重启设备。
内容的提问来源于stack exchange,提问作者Kibirige Calvin
相关产品推荐
相关产品推荐

