iOS端运行React Native应用报错:No bundle URL present
解决React Native 0.69.2在iOS设备上出现"No bundle URL present"错误的可能原因及修复方案
错误日志摘要
2022-07-22 11:51:49.849678+0200 neoAppTemplate[85080:3120676] [native] No bundle URL present.
关联错误:TCP连接失败、请求超时(目标地址:http://192.168.179.5:8081/status)
可能原因及对应修复步骤
1. Mac防火墙拦截了8081端口的外部连接
Mac默认防火墙可能阻止iOS设备访问Metro服务器的8081端口:
- 打开「系统设置」→「网络」→「防火墙」
- 检查是否允许
node进程接收传入连接,若未允许则添加规则 - 可临时关闭防火墙测试是否恢复正常
2. React Native自动识别的IP地址错误
当Mac同时连接多个网络(如Wi-Fi+有线)时,React Native可能选择错误的IP,导致设备无法访问Metro:
- 手动指定Mac的Wi-Fi IP启动Metro:
npx react-native start --host 你的MacWi-FiIP地址 - 或修改Xcode项目的
AppDelegate文件,强制指定bundle URL:
Objective-C版本:
Swift版本:jsCodeLocation = [NSURL URLWithString:@"http://你的MacWi-FiIP:8081/index.bundle?platform=ios&dev=true&minify=false"];let jsCodeLocation = URL(string: "http://你的MacWi-FiIP:8081/index.bundle?platform=ios&dev=true&minify=false")
3. 8081端口被其他进程占用
确认端口占用情况:
lsof -i :8081
若有占用,杀死对应进程:
kill -9 进程ID
或更换Metro端口启动:
npx react-native start --port 8082
同时需在AppDelegate中同步更新端口号
4. iOS设备的网络代理/VPN干扰
设备开启代理或VPN会阻断本地网络访问:
- 关闭设备的代理和VPN,重新连接同一Wi-Fi
- 确保Wi-Fi设置中「HTTP代理」为「自动」或「关闭」
5. Metro服务器缓存或启动异常
即使显示已连接,Metro可能存在缓存或启动问题:
- 停止Metro,清除缓存后重启:
npx react-native start --reset-cache - 重新编译Xcode项目,确保安装包为最新版本
内容的提问来源于stack exchange,提问作者Gh05d
相关产品推荐
相关产品推荐

