Expo Go隧道无法使用求助:构建Android后无法在iPhone测试
解决Expo Go隧道模式无法连接的问题
问题根源
- 项目已切换至Bare Workflow:执行
expo run:android后,项目从Managed Workflow转为Bare模式,而Expo Go仅支持Managed Workflow下的直接调试。 expo-dev-client插件影响:app.json中配置了该插件,会强制使用自定义开发客户端而非Expo Go。- 启动命令参数冲突:当前
start脚本使用--no-dev,该参数会关闭开发模式特性,可能影响隧道生成。
解决方案
方案1:切换回Managed Workflow(推荐,恢复Expo Go直接调试)
- 从
app.json的plugins数组中移除"expo-dev-client" - 删除项目根目录下的
android和ios文件夹(操作前请备份) - 执行命令修复依赖:
npx expo install --fix - 重新启动项目:
此时Metro应生成Expo Go可识别的二维码,隧道地址会通过ngrok暴露。npx expo start --tunnel
方案2:保留Bare Workflow,构建iOS自定义开发客户端
若需保留Bare模式的自定义能力,需为iPhone构建专属开发客户端:
- 确保已配置好EAS和Apple开发者账号
- 执行构建命令:
eas build --profile preview --platform ios - 将构建后的IPA文件安装到iPhone(可通过TestFlight或本地安装)
- 启动项目后用自定义客户端扫描二维码即可调试
方案3:临时强制使用Expo Go(不推荐,可能存在兼容性问题)
在启动命令中添加--no-dev-client参数,强制绕过自定义客户端:
npx expo start --tunnel --no-dev-client
额外排查步骤
- 测试ngrok可用性:单独执行
ngrok http 8081,确认隧道能正常生成并访问 - 检查网络防火墙:确保本地8081端口及ngrok的443/80端口未被拦截
- 清除Expo Go缓存:iPhone上打开Expo Go → 设置 → 清除缓存 → 重启App
内容的提问来源于stack exchange,提问作者Grant
相关产品推荐
相关产品推荐

