Expo开发的App无明显触发随机自动刷新、重建问题如何解决?
Expo Client 频繁自动刷新/重建问题排查方案(Windows+安卓调试场景)
第一步:排查热重载触发源
- 先禁用自动热重载测试:打开Expo Go的开发者菜单(安卓端摇一摇手机调出),关闭Fast Refresh选项,观察是否还会出现自动刷新的情况。如果关闭后问题消失,说明是热重载逻辑被异常触发。
- 检查项目目录下是否有文件被频繁修改:Windows环境下部分杀毒软件、自动同步工具(比如OneDrive、百度网盘同步文件夹)、代码编辑器的自动格式化插件可能会在后台静默修改项目文件,触发Expo的文件监听逻辑。可以临时把项目目录移出同步文件夹,关闭杀毒软件对项目目录的扫描后重试。
- 检查端口占用冲突:Expo默认使用19000、19001、19002端口,若有其他程序占用这些端口,会导致Expo服务端和客户端的连接不稳定,反复触发重连刷新。可以在命令行运行
netstat -ano | findstr :1900查看端口占用,结束占用对应端口的进程后重启Expo服务。
第二步:排查Expo客户端与服务端兼容性问题
- 确认Expo Go客户端版本和项目依赖的expo包版本匹配:如果近期升级过项目的expo依赖,但是手机端的Expo Go没有同步更新,版本不匹配会导致通信异常。可以卸载手机端的Expo Go,重新安装和项目expo版本一致的客户端重试。
- 清除Expo服务缓存:关闭当前运行的Expo服务,在项目目录下运行
npx expo start --clear清除缓存后重启服务,排除缓存损坏导致的异常触发问题。
第三步:排查连接稳定性问题
- Windows和安卓手机必须连接在同一个WiFi局域网下,且WiFi没有开启AP隔离功能:如果路由器开启了AP隔离,会导致手机和电脑无法稳定通信,Expo客户端会反复尝试重连触发刷新。可以尝试关闭路由器的AP隔离,或者用电脑开热点给手机连接后重试。
- 关闭Windows防火墙对Node.js、Expo相关进程的拦截:Windows防火墙默认可能会拦截Expo和手机端的通信请求,可以临时关闭Windows Defender防火墙后测试,如果问题解决,就把Node.js和Expo相关进程加入防火墙白名单。
- 若使用USB有线调试,检查USB线连接是否稳定:松动/非原装的数据线会导致adb连接反复断开重连,触发Expo自动刷新,更换原装数据线重试即可。
内容的提问来源于stack exchange,提问作者Iqra Jahangir
相关产品推荐
相关产品推荐

