React Native真机运行报错No bundle URL present问题求助
解决React Native真机运行“No bundle URL present”问题
针对你遇到的换电脑拉取GitHub仓库后,模拟器正常但真机红屏提示“No bundle URL present”,且Xcode中main.jsbundle显示红色的问题,我整理了几个针对性的解决步骤,按顺序尝试应该能解决:
1. 手动生成并添加main.jsbundle文件
main.jsbundle显示红色说明文件可能未生成或者未正确关联到Xcode项目中,手动生成是最直接的办法:
- 打开终端,进入你的React Native项目根目录,运行以下命令:
(如果你的项目入口文件是react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest iosindex.ios.js,把命令里的index.js替换成这个) - 打开Xcode,右键点击你的项目名称,选择
Add Files to "你的项目名",找到刚才生成的ios/main.jsbundle文件,勾选Copy items if needed,点击Add完成添加。
2. 检查Xcode Build Phases中的打包脚本
换电脑后可能项目的Build Phases配置丢失或路径错误:
- 在Xcode中选中你的项目target,切换到
Build Phases标签页 - 检查是否有
Bundle React Native code and images这个脚本项,如果没有,点击左上角的+号选择New Run Script Phase - 在脚本内容里填入:
确保路径正确(如果你的node_modules在项目根目录,这个路径就没问题)../node_modules/react-native/scripts/react-native-xcode.sh
3. 彻底清理缓存并重新构建
缓存问题是React Native真机调试的常见坑,彻底清理后再试:
- Xcode端:按下
Command+Shift+K清理构建缓存,再按Command+Option+Shift+K彻底清理Derived Data - 终端端:运行以下命令清除RN和Metro缓存:
watchman watch-del-all && rm -rf node_modules && npm install && rm -rf /tmp/metro-* && npm start -- --reset-cache - 重启Metro服务,然后重新点击Xcode的运行按钮部署到真机
4. 验证网络连接与真机调试设置
虽然你说设备和电脑同网,但还是要确认通信正常:
- 在终端输入
ifconfig(Mac)或ipconfig(Windows)获取电脑的本地IP地址 - 在真机的Safari中访问
http://你的本地IP:8081/index.bundle?platform=ios,如果能正常加载内容,说明网络没问题;如果不能,检查电脑防火墙是否允许8081端口的入站请求 - 在真机上打开你的应用,摇一摇设备调出开发者菜单,选择
Debug server host & port for device,输入你的本地IP:8081,然后点击Reload重新加载应用
5. 检查Info.plist的网络权限设置
如果真机无法访问Metro的HTTP服务,可能是App Transport Security限制:
- 在Xcode中打开
Info.plist文件,添加以下配置(如果没有的话):
(如果想更安全,可以只允许你的本地IP和localhost的HTTP请求,按需调整配置即可)<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
按以上步骤逐一尝试,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Jacobo
相关产品推荐
相关产品推荐

