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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:45:00