Expo裸工作流从Xcode运行时如何用Expo Metro Bundler替代react-native start
Expo bare workflow Xcode运行无法连接Metro Bundler解决方案
expo build:ios 是已废弃的经典云端构建命令,仅用于打包iOS生产包,和本地开发调试场景完全无关,也无法解决你遇到的Metro连接问题,请勿执行该命令。
以下是针对独立裸工作流应用、无需依赖Expo Go的解决方案:
具体操作步骤
- 第一步:匹配依赖版本
在项目根目录执行npx expo install,确保所有原生模块版本和当前Expo SDK版本兼容,避免版本不匹配导致的原生逻辑异常。 - 第二步:手动启动Expo专用Metro服务
不要依赖Xcode自动拉起Metro,单独开终端窗口执行npx expo start --dev-client,该命令会启动适配裸工作流开发环境的Metro Bundler。 - 第三步:修正Xcode运行配置
打开ios目录下的.xcworkspace文件(裸工作流请勿直接打开.xcodeproj文件),依次点击顶部菜单栏Product > Scheme > Edit Scheme,选中左侧Run选项:- 切换到Info标签,将Build Configuration设置为Debug(Release模式默认不会连接本地Metro)
- 勾选「Debug executable」选项
- 第四步:确认AppDelegate配置正确
检查ios项目中AppDelegate的bundle地址逻辑,Debug模式下不要硬编码Metro地址,使用Expo默认提供的动态获取逻辑:EXUpdatesAppController.sharedInstance.launchAssetUrl,确保App运行时会自动探测同网段下已启动的Metro服务。 - 第五步:运行应用
保持Metro服务窗口不关闭,在Xcode中选择目标模拟器点击运行按钮,应用启动后会自动连接到已启动的Metro服务,所有运行日志会正常输出到Metro终端窗口,同时支持热重载、调试等功能。
额外注意事项
- 若需要本地打生产包测试,直接在Xcode中将Build Configuration切换为Release后打包即可,不需要调用任何Expo云端构建命令,不会改动现有项目配置。
- 如果运行时仍提示连接失败,可检查本地防火墙是否禁用了Metro默认的8081端口,或者重启Metro服务后重新运行应用。
内容的提问来源于stack exchange,提问作者dani
相关产品推荐
相关产品推荐

