当我运行一个react-native项目时,我得到一个错误,没有bundle URL,但我不知道我做了什么错误,我很困惑。
我也遇到了这个问题(第一次开始使用React Native)。当一个ios模拟(react-native run-ios)正在运行时,问题消失了。我运行npm install,然后再次运行react-native run-ios。在终端窗口中,它显示正在捆绑,然后模拟器显示欢迎屏幕。
在react-native init PropertyFinder行之后检查这个链接,尝试使用npm start(这对我来说是有效的)
========================================================================
16.9更新
我的端口8081被McAfee阻塞。直接使用不同的端口不能工作react-native start——port=8082和react-native run-ios——port=8082
几乎所有的解都试过了。但是什么都不管用。
"react": "16.9.0",
"react-dom": "^16.12.0",
"react-native": "0.61.5",
解决方案:
在Xcode中搜索8081,并将它们全部替换为8082。然后运行相同的命令来构建和运行应用程序。应用程序运行顺畅
react-native start --port=8082
react-native run-ios --port=8082
对我来说,问题是它不能创建JS包。当从Xcode构建时,它没有声明错误,所以你无法知道这一点。要查找错误,请运行以下命令。
React-native bundle——platform ios——dev false——entry-file index.ios.js——bundle-output ./ios/release/mainJsbundle——assets-dest ./ios/release/main.jsbundle
对我来说,错误是缺少PureRenderMixin组件。解决方案可以在这里找到:https://github.com/facebook/react-native/issues/13078。基本上你必须手动安装react@16.0.0-alpha.3。这可以通过运行这个命令来完成。
NPM I——保存react@16.0.0-alpha.3
现在每个人都遇到了这个问题,因为新版本的react alpha正在发布(特别是alpha.5),它们破坏了react原生构建。
这是react-native v0.42.1的一个问题。尝试关闭所有终端和XCode实例并运行:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
关闭模拟器和终端。打开一个新的并进入你的项目,然后像这样升级你的react-native:
react-native upgrade
问题:当bundle执行失败时,RCTFatal中的无限递归。
如错误信息所示:
同意Xcode/iOS许可证需要管理员权限,请运行"sudo xcodebuild -license",然后重试此命令。
执行以下命令成功:
sudo xcodebuild -license
我也有同样的错误,只能通过Xcode运行应用程序。React-native run-ios不起作用。要解决这个问题,你需要删除YOUR_PROJECT/ios/build/的build文件夹。在此之后,您应该能够再次通过react-native run-ios运行您的应用程序。希望这能有所帮助。
在重新启动我的mac后,我也遇到过这种情况。当你在模拟器上运行应用程序时,会打开一个launchPackager终端窗口。我关闭了该窗口并终止了进程(我也关闭了模拟器),然后再次运行react-native run-ios,一切正常。
我也遇到过这样的问题……问题是封装器没有运行,似乎可能是因为我的默认shell是zsh。react-native厌倦打开一个新的终端窗口并运行…/node_modules/react-native/packager/ launchpacker .命令,但是这个命令没有运行。手动运行(并保持运行)为我解决了这个问题。
解决错误No bundle URL present by:
在你的项目根目录中运行以下命令删除iOS构建目录,并在重新构建之前杀死其他React Native会话(假设它们运行在默认端口8081上):
Rm -rf ios/build/;Kill $(lsof -t:8081);react-native run-ios
更新你的React Native工作流,通过将上述命令组合成一个别名,并将其附加到你的Bash配置文件.bashrc,以避免这些错误发生:
Echo "alias rni=\"kill \$(lsof -t -i:8081);Rm -rf ios/build/;React-native run-ios\"" >> ~/.bashrc;源~ / . bashrc
现在你可以用一个简单的别名快捷方式运行React Native iOS构建(不用担心出现一些常见的红色死亡错误屏幕):
rni
是什么帮我解决了这个问题:
打开终端窗口 cd到YOUR_PROJECT/ios 使用rm -r build删除build文件夹 再次运行react-native Run -ios
或者,你可以打开Finder,导航到YOUR_PROJECT/ios并删除构建文件夹。
然后再次运行react-native run-ios。
资料来源:Andrew Bancroft
假设你正在使用nvm并且安装了多个版本的node,下面是解决方案:
假设你在节点v6.9.5中运行npm install -g react-native-cli。 现在运行nvm alias default 6.9.5将节点v6.9.5设为默认值 现在运行react-native run-ios
问题是,你通过nvm安装了多个版本的node,为了安装react-native-cli,你已经切换或安装了最新版本的node,它还没有被标记为nvm中的默认节点。当你运行react-native run-ios时,会打开另一个新的终端窗口,其中默认的nvm不会指向你安装react-native-cli的节点版本。只要遵循上面的设置,我希望能有所帮助。
大多数情况下,此问题发生在DNS查找/ IP查找无法找到本地主机时。
解决方案:
尝试将localhost ip添加到etc主机文件中。
你可以在etc主机文件(/etc/hosts)中添加以下代码行
127.0.0.1 localhost
255.255.255.255 广播主机
::1升。ocalhost
要确认这就是问题所在 你可以在safari上点击bundle url(如果你在chrome中尝试,这将解决,但safari将无法解决它)。http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false
检查您的主机,127.0.0.1 localhost没有被删除 检查网络代理是否未设置 然后NPM install & react-native升级重置你的项目
我的工作是RN 0.49.5。 我试过很多方法,但没有一个有效。最后我解决了这个问题。 这很简单。
主要思想是将本地主机更改为127.0.0.1,但这不是RN告诉您的地方。它在RCTBundleURLProvider中。m#- (BOOL)isPackagerRunning:(NSString *)主机。
代码变更: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 这是好的模拟器。如果是设备,只需将ip地址更改为您机器的ip地址。
请确保.plist文件中的ATS设置是正确的。
你可以在/ios/{{project_name}}/Info.plist找到这个文件
Localhost必须定义为异常请求目标,如下所示:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
*(不要忘记在发布版本中删除此选项..)
这是因为您的客户机无法连接到您的打包器服务器。
如果你是一个像我一样的中国程序员,我认为你可能会使用VPN通过GFW。当您的VPN工具处于“全局模式”时,您的所有请求都将通过世界旅行,无法到达本地主机
试试“自动代理模式”。
如果你不是来自中国,或者你的VPN设置已经是“自动代理模式”,我建议你关闭你的打包服务器,再试一次。
原因:
这是因为应用程序无法找到服务器(通过javascript代码为UI服务)。
解决方案:
确保所有相关的react native关闭(不是必要的,只是为了我的解决方案有一个干净的开始,在我的解释后,你可以弄清楚这是需要的还是不需要的) 先运行NPM Run start或yarn start 等待此命令完成工作(通常你会看到加载依赖关系图,完成)。 运行react-native Run -ios/android
解释:
React Native包含2部分: 本地部分 Javascript部分 构建命令: React-native run-ios/android是构建本机部分,然后部署到设备上,并在设备上启动应用程序(模拟器/模拟器/真实设备)。这通常需要3~4分钟才能完成。 npm run start或yarn start是构建javascript部分,并启动开发服务器为应用程序提供构建的UI。这通常需要30秒完成。
通常情况下,javascript部分先完成,然后是本地部分。(根据他们使用的时间)。
=>这只适用于第一次构建(新鲜构建)。
=>重建:
原生部分只需要10~15秒来检查更改,因为在javascript部分构建和服务之前,原生部分=>没有更改。(我不确定javascript部分是否被重建,但它比本地部分花费了更长的时间) 这就是为什么我们有这个问题,应用运行时要求的东西还不存在。
奖金:
React-native run-ios/android会自动启动开发服务器。 这就是为什么当你在react-native init <app_name>之后运行react-native run-ios/android时,一切都运行得很好。(因为自动启动功能和新构建的时间是上面的状态)。 其他“移除”解决方案之所以有效,是因为它们迫使人们重建。
在这个答案上使用的时间是相对于我的机器=>可能不同于其他人。
我也有同样的问题。但我的问题是我的Mac和iPhone不在同一个wifi网络中。
因此,确保它们都在同一个网络中,并再次重建。如果不是这样,试试其他成员在这里提到的解决方案。
当您不允许通过localhost进行不安全连接时,或者您试图通过http接受不安全连接时,就会发生此问题。
要解决这个问题,在info.plist上添加这个:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
...发生这种情况的另一个原因是,如果你已经安装了Visual Studio Code React Native Tools,但你一直试图在终端中使用React Native:它第一次会工作,但随后它会停止并显示红色的no bundle屏幕。
从vscode启动react native工作得很好…
使用命令
react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
对于我的用例,我必须删除node_modules目录并运行npm install。
$ rm -rf node_modules (make sure you're in the ios project directory)
$ npm install
如果你得到错误“dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58。Dylib”,执行以下操作:
$ brew uninstall --force node --ignore-dependencies node
$ brew uninstall icu4c --ignore-dependencies icu4c
$ brew install icu4c
$ brew unlink icu4c && brew link icu4c --force
$ brew install node
$ npm install
试着加上这句话:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
我们通过删除构建脚本中的SKIP_BUNDLING选项来解决这个问题,RN文档建议添加该选项来加快调试构建。真正的修复(为了我们的原因)包含在RN 0.57中:
https://github.com/facebook/react-native/issues/20553
只需在终端react-native启动:
cd your react native app directory/ react-native start
它将启动打包器,现在不要关闭这个终端窗口,在另一个终端窗口运行你的项目。这是我唯一想要的,让它正常工作。
我是这样做的:
打开终端窗口 cd到YOUR_PROJECT/ios 使用rm -r build删除build文件夹 再次运行react-native Run -ios
当我们有nvm管理的多个版本的节点,而默认版本不是react-native运行的预期版本时,可能会发生此问题。(确保它是Node 8.3或更新版本)
react-native run-ios
打开一个新终端并运行在$PATH中找到的node版本。
如果它发现一个不被react native支持的旧版本的node,它可能会给出这个错误。
确保在打开新终端时,$PATH变量已经指向预期的节点版本(确保它是node 8.3或更新版本)。
这为我解决了问题。祝你好运。
我尝试了下面所有的解决方案,但都不起作用:
Sudo xcodebuild -license或 使用rm -r build删除build文件夹并运行react-native run-ios或 NPM启动并运行react-native run-ios 添加NSAppTransportSecurity到localhost
我是这样解决的:
打开主机文件sudo vi /private/etc/hosts(如果你使用VSCode,使用这个sudo code /private/etc/hosts) 如果不存在,添加三行
127.0.0.1 localhost
255.255.255.255 localhost
::1 localhost
再次运行react-native Run -ios。
这是因为你可能已经关闭了地铁捆绑窗口,或者它可能崩溃了。只需在项目目录下打开另一个终端/cmd并运行NPM start。通过运行npm start React Native将再次启动MetroBundler窗口。在捆绑器完成BUNDLE过程后,只需重新加载应用程序,您就可以开始了。
好吧,这听起来可能很奇怪,但这些答案对我都没用。 我现在在react-native 0.60,问题发生在ios和android上。 对我来说唯一有效的解决办法就是跑步 React-native run-ios或React-native run-android 然后,当出现错误时,运行 npm install(保持捆绑器和模拟器打开) 然后运行react-native run-ios或react-native run-android
打开终端窗口
cd into YOUR_PROJECT/ios
使用rm -r build删除build文件夹
然后在Xcode中打开你的项目并运行一次。它将在启动服务器并创建主服务器时运行。jsbundle文件。
现在如果你再次从终端运行react-native Run -ios,它将像预期的那样工作。
希望能有所帮助!
确保你的项目中有.jsbundle
Add
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
在react原生代码中 尝试重新打开项目
我也遇到了同样的问题,我通过在AppDelegate中进行更改来解决它。m文件。我改变了
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
to
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
这对我来说很有效:)
执行如下命令:
killall -9 node
rm -rf ios/build
react-native run-ios
它将打开launchpacker .command,应用程序将安装在ios模拟器上
这个问题发生在我身上,因为地铁捆绑机启动并收到焦点,而我正在另一个窗口的键盘上打字。我不小心输入了新打开的终端窗口,导致地铁捆扎机崩溃。重新运行react-native run-ios并耐心等待修复了它。
如果您正在运行IOS模拟器,请确保需要运行此命令
react-native运行android 或 npm运行android
一旦你运行以上命令metro bundler将启动,然后运行react- negative run-ios它将工作。
步骤1: 在xcode中打开。xcodeworkspace项目,通过“Terminal”导航, “开放/ ios /。xcodeworkspace"按Enter键。
步骤2: 删除主机。Jsbundle文件
步骤3: 回到VS Code,输入这个, React-native bundle——entry-file index.js——platform ios——dev false——bundle-output ios/main。Jsbundle——assets-dest ios
这将生成新的主线。jsbundle文件。
步骤4: react-native run-ios
你不会再次看到错误
我尝试了以上所有的解决方案,都不适合我。这对我来说是有效的,如果上面的答案不适合你,你可以尝试一下。
在Xcode上打开你的项目工作区,删除main。[PROJECT-NAME]/main.jsbundle文件 创建一个新的main。Jsbundle,在同一个文件夹中。{右键单击->选择新文件->它将打开一个对话框,寻找其他部分,->选择空->命名文件主。Jsbundle ->保存 然后回到项目的终端。执行如下命令:
React-native bundle——entry-file index.js——platform ios——dev false——bundle-output ios/main。Jsbundle——assets-dest ios
启动打包器并再次运行IOS应用程序
我真心希望这能帮到你。
我正在运行iOS模拟器,这个方法有效:
1. 清理本地项目
1.a For Android项目
cd android
gradlew clean
1.b用于iOS项目
cd ios
xcodebuild clean
2. 清理你的反应物贮藏
2.a如果你正在使用npm
npm start -- --reset-cache
2.b如果你用的是纱线
yarn cache clean
之后,您可以再次运行您的项目。
我知道这个问题有很多答案,但这些都没有帮助我。下面的解决方案帮助我解决了这个错误。
你必须进入你的设置,允许这个特定的应用程序。
打开系统首选项。 点击“安全与隐私”。 底部右键单击“点击锁进行更改”。 输入密码。 在general标签下,它说“应用商店和已识别的开发者”,你应该看到你被阻止的应用。 最后一步:点击“无论如何打开”
无法打开源“launchpacker .command”,因为它来自未识别的开发人员
以下步骤:
用xcode打开ios文件项目 在项目包中删除main。jsbundle文件 通过main添加新的空文件。jsbundle名字 运行comment: react-native bundle——entry-file index.js——platform ios——dev false——bundle-output ios/main。Jsbundle——assets-dest ios 现在是react-native run-ios
youtube链接:https://www.youtube.com/watch?v=eCs2GsWNkoo
对于Ios系统,请遵循以下步骤,
Rm -rf ./node_modules . Rm npm安装 react-native链接 cd ios 圆荚体安装 cd . . react-native开始 第一次在XCode中构建应用,然后你也可以使用VScode
我也有这个屏幕,但我的问题是前一天晚上我一直在使用代理(使用Charles监视来自RN env的网络请求)。
一旦我关闭代理应用程序构建/运行在我的模拟器没有任何问题。
我不得不在一个单独的终端上运行“react-native start”。由于某种原因,它不运行了
编辑:另外,这是必要的,因为文件权限设置不正确。我能够通过在受影响的项目目录中运行以下命令来修复它。
chmod 777 node_modules/react-native/scripts/ launchpacker .command
如果像我一样,您有一个在终端会话(.bashrc/.bash_profile)启动时执行的命令集,它等待输入(在我的例子中,是SSH Key的密码短语,带SSH -add),那么您将注意到它实际上阻止打开的终端启动Metro服务器!
尝试在启动时禁用该命令(或者至少在React Native打开的终端中禁用)。这对我很管用!
在我的情况下,我不小心从Xcode的构建阶段删除了这个脚本。
所以,一定要有这个脚本。如果没有,只需点击“+”&选择“新建运行脚本阶段”,然后粘贴以下代码。
export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh
推荐文章
- 如何在iOS上进行base64编码?
- 如何设置背景颜色的视图透明在React本地
- 是否有可能更新一个本地化的故事板的字符串?
- 以编程方式获取Bundle Identifier
- 为iPad和iPhone设计输入按钮
- 如何在我的iPhone应用程序中使用NSError ?
- 我的预发行应用已经在iTunes Connect中“处理”了一周多,这是怎么回事?
- Xcode iOS项目只显示“我的Mac 64位”,但不显示模拟器或设备
- Objective-C中的自动引用计数不能防止或减少什么样的泄漏?
- 对象作为React子对象无效。如果要呈现子元素的集合,请使用数组
- 在Xcode 9中如何从打开的多个模拟器中退出或关闭单个模拟器?
- Redux @connect装饰器中的“@”(at符号)是什么?
- 如何使用Swift播放声音?
- UINavigationBar自定义返回按钮没有标题
- 如何精确地以毫秒为单位记录方法的执行时间?