React Native开发从最初的编译App再安装到手机上调试的工作流,进化成了由Expo带来的类似前端的调试工作流,大大加快了开发的速度。现在无论是create-react-native-app(以下简称CRNA)还是Expo的XDE都是同样的给你一个链接/二维码,然后用手机Expo App输入/扫一扫,就可实时预览和热更新App了。

不过我遇到一个诡异的问题,明明在同一个网络中,Expo App就是连接不上。

经过本人仔细排查、认真分析、多方查阅(省略一万字)……发现是:Expo/CRNA对于电脑上多个网络不会进行挑选,而是直接无脑选择第一个,如果你的第一个网络不对路,例如什么VMware弄的网络啦,当然万年连不上了……

很显然正在使用的网络是第四个WLAN的

但是CRNA直接使用第一个VMware的62

有两种解决方法:

  1. 设置REACT_NATIVE_PACKAGER_HOSTNAME环境变量,Windows下cmd运行set REACT_NATIVE_PACKAGER_HOSTNAME=${custom-ip}。对于我的网络,就是set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.0.142。注意powershell不可以,他们的set命令语法不同。
  2. 修改网络优先级,Win10之前,控制面板>网络连接页面>菜单栏>高级>高级设置。Win10可能需要修改接口跃点数

此外,可能有在虚拟机中使用Expo的需求。对于VMware,只需要将网络设置为桥接模式,就可以啦

总之只要保证手机和给的链接是同一网段就可以了。我的就是192.168.0网段

是时候学一波计算机网络了?

03-05 17:09