react-native中的“不存在捆绑包URL”是什么意思?


199

当我运行一个本机反应项目时,我得到一个错误no bundle URL present,但是我不知道自己犯了什么错误,我感到非常困惑。

在此处输入图片说明


2
我在响应本机iOS应用程序时遇到了这个问题。只需在xcode的ios文件夹中打开xcodeproj并从那里运行它。确保您没有代理。
Abhay Shiro

9
大多数时候,清除构建目录对我rm -rf ios/build/
有所

在大多数情况下,这对我有帮助。但是在这种情况下,我可以通过以下命令解决此错误(本机:“ 0.60.4”):watchman watch-del-all
O. Borcuhin

这通常意味着您的都市捆绑器未运行,有人在自己的终端或标准计算机终端上运行该捆绑器。我通常关闭终端,重新启动应用程序,然后对其进行修复。
萨拉·伊内斯·卡尔德龙

Answers:


128

No bundle URL present通过以下方法解决错误:

  • 在重新构建之前,在项目根目录中运行以下命令以删除iOS构建目录,并终止其他React Native会话(假设它们正在默认端口8081上运行):

rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios

  • 通过将以上命令组合组合为别名,并使用以下命令将其附加到您的Bash配置文件.bashrc中,来更新您的React Native工作流以避免发生这些错误:

echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc

现在,您可以使用简单的别名快捷方式运行React Native iOS构建(无需担心出现一些常见的红色错误死亡屏幕):

rni


1
对我非常有用。我唯一要做的另一件事是退出模拟器(如果尚未关闭)。
AnnawanDev '18年

74

我也碰到了这个问题(第一次开始使用React Native)。当-在react-native run-ios运行ios Simulation()时-我跑了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

在此处输入图片说明


2
@dcp您是否已尝试在已启动的情况下多次运行“ react-native run-ios”?似乎每次我启动我的应用程序时,我至少需要做两次(每次之间等待大约2分钟)。
跳过Suva

为我工作,但很想找到一个长期的解决方案,每次都不需要此步骤。
mheavers 17-4-5

31

当我捆绑我的应用程序时遇到了同样的问题。检查您main.jsbundle是否针对主要项目


3
作为我的本机0.60升级的一部分,这发生在我身上。
IonicBurger

相同视频链接,youtube.com
watch?v = eCs2GsWNkoo

这也发生在我身上。但后来我点击了它。但还是同样的问题
Jason G

29

如错误消息中所述:

同意Xcode / iOS许可证需要管理员权限,请运行“ sudo xcodebuild -license”,然后重试此命令。

运行以下命令有效:

sudo xcodebuild -license

tks这对我来说是工作后,在终端中运行,并在之后建立xcode
tess hsu 19/12/11

不。仍然不适合我。我在其他端口上运行,8081被阻止
Ashish Singh Rawat

27

当您不允许通过本地主机的不安全连接,或者您尝试通过http接受不安全的连接时,就会发生此问题。

要解决此问题,请在上添加info.plist

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>

4
这个家伙真是英雄。从跳窗救了我和我的Macbook!我已将异常域从更改localhost为Info.plist中的本地网络地址,因此无法解决。我为“ localhost”添加了一个块作为异常域,它起作用了。
Darius

1
认真地,你的回答对我来说就像上帝一样。。。。。。。。。。。谢谢,我从星期四开始就一直坚持。
Tushar Pandey

26

关闭模拟器和终端。打开一个新项目,然后转到您的项目,然后像下面这样升级您的react-native:

react-native upgrade

问题:在包执行失败时,RCTFatal中的无限递归


1
是的,但就我而言,我不需要升级。关闭终端和模拟器对我来说足够了。
gianni

@gianni您现在正在运行哪个版本的react-native?
马特尼·马可尼

1
似乎没什么区别,仍然看到错误。
SSH

2
这对我有用,但是您也必须关闭模拟器,然后运行react-native run-ios
James O'Brien

1
没有帮助```info没有版本通过。正在获取最新的...警告指定的版本“ 0.61.5”已安装在node_modules中,并且满足“ 0.61.5”的存储范围。无需升级```
Ashish Singh Rawat

19

原因:

这是因为该应用无法找到服务器(通过javascript代码为UI提供服务)。

解:

  • 确保与本机反应有关的所有内容都已关闭(没有必要,只是为了让我的解决方案有一个清晰的起点,在我解释之后,您可以确定是否需要这样做)
  • npm run start还是yarn start
  • 等待此命令完成(通常您会看到Loading dependency graph, done.
  • react-native run-ios/android

说明:

  • React Native包含两个部分:

    • 本机部分
    • 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 run-ios/android之后react-native init <app_name>,一切运行良好。(因为自动启动功能和上述状态花费了新的构建时间)。
  • 其他“删除”解决方案也起作用,因为它们强制进行了重建。

此答案所用的时间与我的机器有关=>在其他机器上可能有所不同。



11

我有同样的错误,只能通过Xcode运行该应用程序。react-native run-ios不工作。要解决此问题,您需要删除位于的build文件夹YOUR_PROJECT/ios/build/。之后,您应该可以react-native run-ios再次运行您的应用程序。希望这可以帮助。


9

大多数情况下,当DNS查找/ IP查找无法找到本地主机时,就会出现此问题。

解决方案:

尝试将localhost ip添加到您的etc主机文件中。

您可以将以下行添加到您的etc主机文件(/ etc / hosts)

127.0.0.1本地主机

255.255.255.255广播主机

:: 1升 ocalhost

要确认这是问题所在, 您可以在safari上点击捆绑包网址(如果您在chrome中尝试使用,则可以解决,但safari无法解决)。http:// localhost:8081 / index.ios.bundle?platform = ios&dev = true&minify = false


迁移到全新计算机后,这就是我需要的。TY!
jeffctown

在新电脑上也一样!
维沙尔·萨卡里亚

我的问题是在网络配置上设置代理,我只是删除了代理,所以效果很好。
艾哈迈德·卡尼

8

确保.plist文件中的ATS设置正确。

您可以在/ios/{{project_name}}/Info.plist中找到文件

必须将本地主机定义为异常请求目标,如下所示:

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

*(不要忘记在发行版中删除它。)


7

对我来说,问题是它无法创建JS包。从Xcode构建时,它没有指出错误,因此您无法了解这一点。要查找错误,请运行以下命令。

react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle

对我来说,错误是缺少PureRenderMixin组件造成的。可以在此处找到解决方案的地址:https : //github.com/facebook/react-native/issues/13078。基本上,您必须手动安装react@16.0.0-alpha.3。可以通过运行此命令来完成。

npm i --save react@16.0.0-alpha.3

现在,每个人都在发生此问题,因为发布了较新版本的React Alpha(尤其是alpha.5),并且它们破坏了React Native的构建。


命令'react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assest-dest ./ios/release/ main.jsbundle'将描述构建捆绑包时的任何错误。直到此命令成功执行,run-ios才起作用
eric f。

我当前的错误是无法以某种方式识别“ react-redux”的“ @connect”?
埃里克f。

也许尝试添加"plugins": ["transform-decorators-legacy"]到您的.babelrc文件中。或尝试使用连接HOC。
urbancvek

@urbancvek,对我来说,错误是这The node type SpreadProperty has been renamed to SpreadElement及其@babel内部的引用库node_modules,但我没有找到解决此问题的方法。
丹尼尔(Daniel)

7

解决方案-> npm start然后打开新的终端并转到您的项目路径,然后单击 react-native run-ios它对我有用


7

是什么解决了我的问题:

  • 打开终端窗口
  • cd 进入 YOUR_PROJECT/ios
  • 使用以下方法删除构建文件夹 rm -r build
  • 再跑react-native run-ios一次

或者,您可以打开Finder,浏览YOUR_PROJECT/ios并删除该build文件夹。

然后react-native run-ios再次运行。

资料来源:安德鲁·班克罗夫特(Andrew Bancroft)


5

这是react-native v0.42.1的问题。尝试关闭所有终端和XCode实例并运行:

launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios

3
“这是react-native v0.42.1的问题。”-v.0.43也存在。
dcp


5

只需在Terminal中运行react-native start

cd your react native app directory/ react-native start 

它将启动打包程序,现在不要关闭此终端窗口,在另一个终端窗口中运行您的项目。这是我发现可以使其正常运行的唯一希望。


4

我发现绕过此方法的最简单/最快捷的方法是退出模拟器中的应用程序(2 x Cmd + Shift + H),然后重新启动。


4

我有同样的问题。但是我的问题是我的Mac和iPhone不在同一个wifi网络中。

因此,请确保它们都在同一网络中并再次重建。如果不是这种情况,请尝试此处其他成员提到的解决方案。


3

检查您的网络代理,最好将其关闭。

或者您应该找到其他方法来维护打包服务器


谢谢,我打开了穿越长城的全球VPN!
BaiJiFeiLong

我在Mac中禁用了自动代理配置。经过2天的努力,它起作用了:D ...谢谢。
尼拉夫·in那

我确实在运行一个我什至不记得的VPN。关闭它的工作!
Pedro Marques

3

重新启动Mac后,这也发生在我身上。当您在模拟器上运行应用程序时,会打开一个launchPackager终端窗口。我关闭了该窗口并终止了进程(我也关闭了模拟器),然后再次运行react-native run-ios,一切正常。



3

我也遇到了这个问题...问题是打包程序未运行,这可能是因为我的默认shell是zsh。react-native轮胎打开一个新的终端窗口并运行,.../node_modules/react-native/packager/launchPackager.command但是没有运行。手动运行(并保持运行)对我来说已解决。


3

在info.plist中的NSExceptionDomains dict上检查您的“ localhost”键

如果不存在,则会导致错误。


2

假设您正在使用nvm并且安装了多个版本的节点,那么以下是解决方案:

  1. 假设您npm install -g react-native-cli参加node v6.9.5
  2. 现在node v6.9.5通过运行将其设置为默认值nvm alias default 6.9.5
  3. 现在运行 react-native run-ios

问题是,您已通过nvm安装了多个版本的节点,并且要安装react-native-cli时已切换或安装了最新版本的节点(尚未标记为指向该节点的默认节点)nvm。在运行时,react-native run-ios这将打开另一个新的终端窗口,其中默认nvm未指向您已安装的节点版本react-native-cli。只需按照上述设置,希望对您有所帮助。


2

确保您的项目中包含.jsbundle

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

在您的本机代码中尝试重新打开项目


1

我正在与RN 0.49.5。我尝试了很多方法,但是没有人可以使用。终于我解决了。这很简单。

主要思想是将更localhost改为127.0.0.1,但这不是RN告诉您的地方。在RCTBundleURLProvider.m#-(BOOL)isPackagerRunning:(NSString *)host中

更改代码: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 模拟器可以。如果是设备,只需将IP地址更改为您计算机的IP地址即可。


您能否详细说明您的解决方案?
Ashish Singh Rawat


1

执行以下命令:

killall -9 node
rm -rf ios/build
react-native run-ios

它将打开launchpackager.command,该应用程序将安装在ios模拟器上


0

确保launchPackage.command正在终端中运行,然后再次尝试运行。它将建立捆绑包。有点像webpack-dev-server。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.