React Native 0.75.3通过Xcode构建iOS真机应用后无法连接Metro bundler,提示No Bundle URL Present
问题描述
我用以下命令新建了一个React Native项目:
npx @react-native-community/cli@latest init AwesomeProject --version 0.75.3
项目环境信息:
- React Native版本:0.75.3
- react版本:18.3.1
- Node.js版本:20.17.0
通过Xcode将应用构建并安装到iPad真机上后,安装成功但无法连接Metro bundler——即使已经运行了npx react-native start,应用启动时还是抛出错误:
No bundle URL present.
Make sure you're running a packager server or have included a .jsbundle file in your application bundle.
错误截图如下:
解决方法
我之前也碰到过类似的真机连接问题,给你几个亲测有效的排查和解决步骤:
确保设备与电脑同网,指定Metro监听所有地址
先关闭当前运行的Metro服务,用以下命令重新启动:npx react-native start --host 0.0.0.0然后摇晃iPad打开开发者菜单,选择「Settings」→「Debug server host & port for device」,输入你的电脑本地IP地址加上
:8081(比如192.168.3.10:8081),保存后重启应用。检查Xcode Debug模式的构建设置
打开Xcode的项目配置,切换到你的真机target,进入「Build Phases」标签页,找到「Bundle React Native code and images」选项。如果当前是Debug模式,务必确保这个选项没有被勾选——Debug模式下应用应该连接Metro获取代码,而非使用本地打包的jsbundle。清除项目缓存,重新构建
依次执行以下命令清理缓存并重置依赖:npx react-native clean rm -rf node_modules && npm install完成后重启Metro,再用Xcode重新构建并安装到设备上。
检查Mac防火墙与网络权限
如果你的Mac是Ventura及以上系统,防火墙可能阻止了Metro和设备的通信。可以暂时关闭防火墙(系统设置→网络→防火墙),或者在防火墙设置里给node和Xcode授权网络访问权限。重置开发者菜单配置
摇晃设备打开开发者菜单,选择「Configure Bundler」,确认服务器地址为电脑IP:8081,若有误则修正后重启应用;也可以选择「Reset to Defaults」,再重新设置调试服务器地址。
备注:内容来源于stack exchange,提问作者Praveen kumar

