在Xcode中运行React Native项目时出现"No Script Url Provided"错误
解决React Native无框架模式下"No Script Url Provided"错误
问题原因
直接点击Xcode运行按钮仅完成了iOS原生代码的构建,但无框架React Native不会自动启动Metro JS打包服务,也没有默认配置JS代码的加载地址,导致App找不到要运行的JS代码,从而抛出该错误。
分步解决方案
启动Metro服务
- 打开终端,导航到你的项目根目录
- 运行命令:
npx react-native start(无需全局安装react-native,npx会自动调用项目依赖的版本) - 看到终端输出"Metro is running"类提示,说明服务启动成功
给App配置脚本URL
方法一:通过开发者菜单手动配置(简单快捷)- 在iPhone模拟器中按下
Cmd + D弹出开发者菜单(或摇一摇模拟器) - 选择「Configure Bundler」选项
- 输入地址:
http://localhost:8081/index.bundle?platform=ios,点击保存 - 选择「Reload」,App即可加载JS代码
方法二:在Xcode中永久配置(避免重复手动输入)
- 打开项目内的
Info.plist文件 - 添加
NSAppTransportSecurity字典,在其中新增NSAllowsArbitraryLoads并设置为YES(仅用于调试,发布前需修改) - 打开
AppDelegate.m(或AppDelegate.swift),找到获取JS代码地址的部分,替换为固定的Metro地址:// Objective-C示例 NSURL *jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.bundle?platform=ios&dev=true"];// Swift示例 let jsCodeLocation = URL(string: "http://localhost:8081/index.bundle?platform=ios&dev=true")!
- 在iPhone模拟器中按下
你遗漏的指南步骤
官方无框架指南中明确提到必须手动启动Metro服务才能运行JS代码,只是新手容易忽略——不同于RN初始化的项目,无框架模式下原生端与JS端是分离的,Xcode运行不会自动触发Metro启动,需要手动启动服务让App能获取打包后的代码。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

