没有bundle URL present'在react-native吗?

当我运行一个反应原生项目时,我得到一个错误no bundle URL present,但我不知道我做了什么错误,我很困惑。

enter image description here

177171 次浏览

我也遇到了这个问题(第一次开始使用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=8082react-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

enter image description here

检查你的网络代理,最好关闭它。

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

对我来说,问题是它不能创建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 < /代码> < / p >

对我来说,错误是缺少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原生构建。

这是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,一切正常。

在我的案例中,通过重新启动adb服务器来解决问题:adb kill-server && adb start-server

我也遇到过这样的问题……问题是封装器没有运行,似乎可能是因为我的默认shell是zsh。react-native轮胎打开一个新的终端窗口并运行.../node_modules/react-native/packager/launchPackager.command,但这没有运行。手动运行(并保持运行)为我解决了这个问题。

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

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

rm -rf ios/build/; kill $(lsof -t -i: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; source ~/.bashrc

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

rni

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

在info.plist中的NSExceptionDomains字典中检查你的“localhost”键

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

是什么帮我解决了这个问题:

  • 打开终端窗口
  • cd转换为YOUR_PROJECT/ios
  • 使用rm -r build删除构建文件夹
  • 再次运行react-native run-ios

或者,你可以打开Finder,导航到YOUR_PROJECT/ios并删除build文件夹。

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

来源:安德鲁·班克罗夫特

假设你正在使用nvm和安装的多个版本的节点,下面是解决方案:

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

问题是,你通过nvm安装了多个版本的节点,为了安装react-native-cli,你已经切换或安装了最新版本的节点,它还没有被标记为指向nvm的默认节点。当你运行react-native run-ios时,会打开另一个新的终端窗口,其中默认的nvm不是指向你安装react-native-cli的节点版本。只要遵循上面的设置,我希望能有所帮助。

关闭当前正在运行的React Packager终端窗口,然后从Xcode重新运行你的iOS项目应该可以工作。

< p >解决方案- - - > npm start然后打开新的终端,进入你的项目路径,然后点击 react-native run-ios它为我工作

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

大多数情况下,此问题发生在DNS查找/ IP查找无法找到本地主机时。

解决方案:

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

你可以在etc主机文件(/etc/hosts)中添加以下代码行

127.0.0.1 localhost

255.255.255.255 broadcasthost

::1 l。ocalhost

确认此问题 你可以在safari上点击bundle url(如果你在chrome中尝试,这将解决,但safari将无法解决它)。http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false < / p >

  1. 检查你的主机127.0.0.1 localhost没有被删除
  2. 检查网络代理是否未设置
  3. 然后npm install &react-native upgrade重置你的项目

我正在使用RN 0.49.5。 我试过很多方法,但没有一个有效。最后我解决了这个问题。 这很简单。< / p >

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

代码更改: <代码> oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 这是好的模拟器。如果是设备,只需将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设置已经是“自动代理模式”,我建议你关闭你的打包服务器,再试一次。

另一件对我有用的事情是,在xcode中打开项目,然后清理并构建它。通常它会重新运行打包服务器并解决问题。

原因:

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

解决方案:

  • 确保所有相关的react native关闭(不是必要的,只是为了我的解决方案有一个干净的开始,在我的解释后,你可以弄清楚这是需要的还是不需要的)
  • 首先运行npm run startyarn start
  • 等待这个命令完成工作(通常你会看到Loading dependency graph, done.)
  • 运行react-native run-ios/android

解释:

  • React Native包含2部分:

    • 本地部分
    • Javascript部分
    • 李< / ul > < / >
    • < p >构建命令:

      • react-native run-ios/android是构建本机部分,然后部署到设备上,并在设备上启动应用程序(模拟器/模拟器/真实设备)。这通常需要3~4分钟才能完成。

      • npm run startyarn start是构建javascript部分,并启动开发服务器为应用程序提供构建的UI。这通常需要30秒才能完成。

      • 李< / ul > < / >

      通常情况下,javascript部分先完成,然后是本地部分。(根据他们使用的时间)。

      =>这只适用于第一次构建(新鲜构建)。

      =>重建:

      • 原生部分只需要10~15秒来检查更改,因为在javascript部分构建和服务之前,原生部分=>没有更改。(我不确定javascript部分是否被重建,但它比本地部分花费了更长的时间)

      • 这就是为什么我们有这个问题,应用运行时要求的东西还不存在。

      奖金:

      • react-native run-ios/android将自动为您启动开发服务器。
      • 这就是为什么当你在react-native init <app_name>之后运行react-native run-ios/android时,一切都运行良好。(因为自动启动功能和新构建的时间是上面的状态)。
      • 其他“移除”解决方案之所以有效,是因为它们迫使人们重建。

      在这个答案上使用的时间是相对于我的机器=>可能不同于其他人。

有同样的问题,当我做捆绑我的应用程序。 检查你的main.jsbundle是针对你的主项目

 ></a></p></div>
                                                                            </div>
                                </div>
                            </div>
                        </div>
                                                <div class=

我也有同样的问题。但我的问题是我的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原生工具,但你一直试图在终端中使用react本机:它第一次会工作,但随后它会停止并向你显示红色的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

首先关闭模拟器,然后在终端上运行这些程序

npm install


react-native run-ios

对于我的用例,我必须删除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>

export FORCE_BUNDLING=true对我有用。在控制台中有一个警告,它没有被捆绑。

我在我的macbook上通过电缆和wifi连接到网络,关闭wifi,点击运行,它就工作了!

我们通过删除构建脚本中的SKIP_BUNDLING选项来解决这个问题,RN文档建议添加该选项来加快调试构建。真正的修复(为了我们的原因)包含在RN 0.57中:

https://github.com/facebook/react-native/issues/20553

在终端react-native start中运行:

cd your react native app directory/ react-native start

它将启动打包器,现在不要关闭这个终端窗口,在另一个终端窗口运行你的项目。这是我唯一想要的,让它正常工作。

试着运行这段代码:

$ sudo xcodebuild -license

这可能会解决问题。这对我很有用。

我是这样做的:

  • 打开终端窗口
  • cd到YOUR_PROJECT/ios
  • 使用rm -r 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的构建文件夹并运行react-native run-ios
  • npm start和运行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

关闭全局代理(shadowsocks)

这是因为你可能已经关闭了地铁捆绑窗口,或者它可能崩溃了。只需在项目目录下打开另一个终端/cmd并运行npm start。通过运行npm start React Native将再次启动MetroBundler窗口。在捆绑器完成BUNDLE过程后,只需重新加载应用程序,你就可以开始了。

好吧,这听起来可能很奇怪,但这些答案对我都没用。 我现在在react-native 0.60,问题发生在ios和android上。 对我来说唯一有效的解决办法就是跑步 react-native run-iosreact-native run-android 然后,当出现错误时,运行 npm install(保持捆绑器和模拟器打开) 然后运行react-native run-iosreact-native run-android

打开终端窗口

cd into YOUR_PROJECT/ios

使用rm -r build删除构建文件夹

然后在Xcode中打开你的项目并运行一次。它将在启动服务器时运行,并创建main.jsbundle文件。

现在如果你再次从终端运行react-native run-ios,它将像预期的那样工作。

希望能有所帮助!

确保你的项目中有.jsbundle

添加

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"];

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模拟器,请确保需要运行此命令

< p > react-native运行android 或 NPM run-android

一旦你运行以上命令metro bundler将启动,然后运行react- negative run-ios它将工作。

我尝试了上面的大部分答案。 但唯一有效的是一个watchman命令(我使用react-native: "0.60.4"):

watchman watch-del-all

< p >步骤1: 在xcode中打开。xcodeworkspace项目,通过"Terminal"导航, “打开/ ios / .xcodeworkspace"回车. < / p > < p >步骤2: 删除主机。

. Jsbundle文件 < p >步骤3: 回到VS Code,输入这个, react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios < / p >

这将生成新的主线。jsbundle文件。

< p >步骤4: react-native run-ios < / p >

你不会再次看到错误

我尝试了以上所有的解决方案,都不适合我。这对我来说是有效的,如果上面的答案不适合你,你可以尝试一下。

  1. 在Xcode上打开你的项目工作区,删除[project - name]/main.jsbundle中的main.jsbundle文件

  2. 创建一个新的main。Jsbundle,在同一个文件夹中。{右键单击->选择新文件->它将打开一个对话框,寻找Others部分,->选择Empty ->文件命名为main.jsbundle ->保存

  3. 然后回到项目的终端。执行如下命令:

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

  1. 启动打包器并再次运行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

之后,您可以再次运行您的项目。

我知道这个问题有很多答案,但这些都没有帮助我。下面的解决方案帮助我解决了这个错误。

你必须进入你的设置,允许这个特定的应用程序。

  1. 打开系统首选项。
  2. 点击“安全&privacy"。
  3. 底部右键单击“”;点击锁进行更改”。
  4. 输入密码。
  5. 在general标签下,它说“应用商店和已识别的开发者”,你应该看到你被阻止的应用。
  6. 最后一步:点击“任意打开”;

" launchpacker .command "无法打开,因为它来自一个未识别的开发人员

Mcafee Macbook用户:

Sudo launchctl remove com.mcafee.agent.macmn

以下步骤:

  • 用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

也许你忘了这一步

cd ios && pod install

对于Ios系统,请遵循以下步骤,

  1. Rm -rf ./node_modules . Rm
  2. npm安装
  3. react-native链接
  4. cd ios
  5. 圆荚体安装
  6. cd . .
  7. react-native开始
  8. 第一次在XCode中构建应用,然后你也可以使用VScode

我也有这个屏幕,但我的问题是前一天晚上我一直在使用代理(使用Charles监视来自RN env的网络请求)。

一旦我关闭代理应用程序构建/运行在我的模拟器没有任何问题。

我必须运行“react-native start”;在一个单独的航站楼。由于某种原因,它不运行了

Edit:另外,它证明这是必要的,因为文件权限没有正确设置。我能够通过在受影响的项目目录中运行以下命令来修复它。

chmod 777 node_modules/react-native/scripts/launchPackager.command

关闭/打开设备/ mac上的无线网络,重建应用程序

更深层次的调试:查看XCode日志,它可能包含:&;无法连接到服务器&;准确的URL。

如果像我一样,您有一个在终端会话(.bashrc/.bash_profile)启动时执行的命令集,等待输入(在我的情况下,SSH密钥的密码为ssh-add),那么您将注意到它实际上阻止打开的终端启动Metro服务器!

尝试在启动时禁用该命令(或者至少在React Native打开的终端中禁用)。这对我很管用!

在我的情况下,我不小心从Xcode的构建阶段删除了这个脚本。

所以,一定要有这个脚本。如果没有,点击"+“;,选择“新的运行脚本阶段”;然后粘贴下面的代码。

export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh

enter image description here