React Native iOS真机运行报错:No bundle URL present
解决React Native真机启动报错「No bundle URL present」的方案
我之前也碰到过完全一样的问题——模拟器跑起来顺得不行,真机安装后一打开就炸这个错,折腾了好几个小时才搞定。结合我自己的踩坑经验,给你整理几个优先级高的解决方法:
1. 检查Xcode的Build Phases脚本配置
这是最常见的原因:真机构建时没有正确执行React Native的打包脚本,导致bundle没被塞进App包。
- 打开Xcode,选中你的项目Target,切换到「Build Phases」标签页
- 找一下有没有名为
Bundle React Native code and images的Run Script阶段- 如果没有,点击左上角的「+」→ 选「New Run Script Phase」,然后把下面的脚本粘贴进去:
export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh - 一定要把这个脚本拖动到「Copy Bundle Resources」阶段之前执行,否则bundle文件还没生成就被复制了,肯定找不到
- 如果没有,点击左上角的「+」→ 选「New Run Script Phase」,然后把下面的脚本粘贴进去:
2. 手动生成离线bundle并导入项目
如果自动打包脚本抽风,手动生成bundle是最稳妥的办法:
- 在项目根目录执行命令生成bundle和资源文件:
(注意如果你的入口文件是npx react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest iosindex.ios.js,就把entry-file改成这个) - 打开Xcode,把生成的
main.jsbundle和assets文件夹拖到项目导航栏里,勾选「Copy items if needed」和对应的Target - 回到Build Phases,把
Bundle React Native code and images脚本的勾选取消掉,避免重复打包冲突
3. 彻底清理缓存与构建残留
有时候缓存会搞出各种玄学问题,彻底清一遍试试:
- 执行以下命令:
# 清理node_modules和依赖 rm -rf node_modules && npm install # 清理iOS pod依赖 cd ios && pod deintegrate && pod install && cd .. # 清理Xcode构建缓存 rm -rf ~/Library/Developer/Xcode/DerivedData # 清理React Native缓存 npx react-native clean - 然后重新用Xcode构建真机版本
4. 检查Info.plist的网络权限(调试模式)
如果是用本地packager调试真机(不是离线包),需要允许App访问非HTTPS的packager地址:
- 打开
ios/[你的项目名]/Info.plist - 添加「App Transport Security Settings」字典,在里面添加
NSAllowsArbitraryLoads并设置为YES
(正式发布时记得改成更严格的配置,比如只允许特定域名,现在先用来解决问题)
5. 确认真机与packager的网络连接
如果是调试模式(不是离线包),还要确保:
- 真机和电脑在同一个Wi-Fi网络下
- 摇晃真机打开开发菜单,选择「Configure Bundler」,输入电脑的局域网IP和packager端口(默认8081)
- 可以在浏览器里用真机访问
http://[电脑IP]:8081/index.bundle?platform=ios,如果能下载bundle,说明网络没问题
要是这些方法都试过还是不行,可以检查一下项目的入口文件路径是否正确,或者有没有第三方库的打包冲突(比如某些原生库会干扰React Native的打包流程)。
内容的提问来源于stack exchange,提问作者Michael C
相关产品推荐
相关产品推荐

