Windows环境下Expo Go无法在iPhone上运行React Native项目(Android模拟器可正常运行)
Windows环境下Expo Go无法在iPhone上运行React Native项目(Android模拟器可正常运行)
我之前在Windows上折腾Expo连iOS的时候也踩过几乎一模一样的坑,结合你的情况,给你几个针对性的排查和解决步骤,你可以一步步试:
一、先确认基础网络连通性
- 先在Windows的命令行里执行
ipconfig,找到当前WiFi的IPv4地址(比如你提到的192.168.2.x) - 打开iPhone的Safari,直接访问
http://[你的Windows IPv4]:8081(比如http://192.168.2.100:8081),如果能看到Expo的调试页面,说明网络是通的,问题出在Expo配置;如果打不开,那就是Windows和iPhone之间的网络连通性有问题,先解决这个。 - 务必确认iPhone和Windows连的是同一个WiFi的同一个频段(比如都是2.4G或者都是5G),有些路由器会把2.4G和5G分成不同的SSID,或者iPhone不小心连了访客网络,这都会导致网段不通。
二、深入排查Windows防火墙与安全软件
- 你已经允许Node.js过防火墙,但要检查防火墙规则里的Node.js是不是允许所有网络类型(专用+公用):打开Windows Defender防火墙 → 允许应用或功能通过防火墙 → 找到Node.js,确保“专用”和“公用”都打勾了。
- 临时关闭Windows Defender防火墙(仅测试用,之后记得打开),再用
npx expo start --lan启动项目扫QR码,如果能连上,说明是防火墙规则的问题,你可以重新添加更宽松的规则,或者把Expo CLI的进程也添加到允许列表里。 - 如果你装了第三方杀毒/安全软件(比如360、腾讯管家等),这些软件自带的防火墙经常会拦截跨设备的网络请求,建议临时关闭这些软件再测试,确认是不是它们的问题。
三、Expo相关的细节调整
- 不要只依赖扫QR码,试试手动输入地址:打开Expo Go,选择“Enter URL manually”,输入Expo启动后显示的LAN地址(比如
exp://192.168.2.100:8081),有时候QR码的解析会出问题,手动输入更可靠。 - 用
npx expo start --clear启动项目,清除Expo的本地缓存,避免旧缓存导致的加载异常。 - 检查Expo Go的版本,你现在用的是54.0.1,去App Store看看有没有最新版更新,iOS 18.6.2是比较新的系统,有时候Expo Go需要适配系统更新。
- 清除Expo Go的缓存:在iPhone的「设置」里找到Expo Go,选择“Clear Cache”,然后重启Expo Go再尝试连接。
四、路由器的网络配置排查
- 很多路由器默认开启了**AP隔离(客户端隔离)**功能,这个功能会阻止同一WiFi下的设备互相访问,直接导致Windows和iPhone无法连通。你可以登录路由器后台(一般在浏览器输入192.168.2.1或192.168.1.1,账号密码在路由器底部),找到「无线设置」里的AP隔离选项,把它关掉。
- 确认路由器没有屏蔽Expo常用的端口:Expo默认会用到19000-19003、8081这些端口,你可以在路由器的「防火墙/端口过滤」设置里检查,确保这些端口没有被拦截。
- 试试换个网络环境:比如用iPhone开热点,Windows连接这个热点,然后启动Expo再测试,这样可以排除家里路由器的问题。
五、最后兜底的小技巧
- 重启所有设备:Windows电脑、iPhone、路由器,有时候网络缓存的小问题,重启就能解决。
- 新建一个空白Expo项目测试:用
npx create-expo-app blank-test创建一个新项目,然后用同样的方法连接Expo Go,如果空白项目能正常加载,说明是你现有项目的配置问题(比如某个依赖的兼容性);如果还是不行,那就是环境的问题,继续排查网络和防火墙。
我当时的问题就是路由器开了AP隔离,关掉之后立刻就连上了。你可以从网络连通性开始排查,这是最常见的原因,一步步来应该能解决~




