react-native中"No bundle URL present"的含义是什么?

Yin*_*Xue 163 ios reactjs react-native

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

在此输入图像描述

Luk*_*oen 114

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

  • 它为我返回“kill:没有足够的参数”:(有人知道为什么以及如何解决它吗? (6认同)

Ski*_*uva 67

我也遇到了这个问题(第一次开始使用React Native).当ios模拟(react-native run-ios)正在运行时,问题就消失了- 我跑了npm install然后react-native run-ios又跑了.在终端窗口中,它显示它正在捆绑,然后模拟器显示欢迎屏幕.

react-native init PropertyFinder尝试使用后检查此链接以获取简要信息npm start(这个适用于我)

  • @dcp你是否已经尝试多次运行"react-native run-ios"而它已经启动了?似乎每次我旋转我的应用程序,我需要至少两次(每次之间等待大约2分钟). (2认同)

Mat*_*oni 27

关闭你的模拟器和终端.打开新的并转到您的项目,然后像这样升级您的react-native:

react-native upgrade
Run Code Online (Sandbox Code Playgroud)

问题:https://github.com/facebook/react-native/issues/5090

  • 这对我有用,但你必须关闭模拟器,然后运行react-native run-ios (2认同)

cwR*_*Kim 25

按照错误消息中的说明:

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

...我运行了以下命令:

sudo xcodebuild -license
Run Code Online (Sandbox Code Playgroud)

它现在有效.


par*_*rse 24

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

  • 作为我的react-native 0.60升级的一部分,这在某种程度上发生在我身上。 (3认同)

Wit*_*cio 22

当您不允许通过localhost进行不安全的连接时,或者您尝试通过http接受不安全的连接时,会发生此问题.

要解决此问题,请在info.plist以下位置添加:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>
</key>
Run Code Online (Sandbox Code Playgroud)

  • 这个家伙真是英雄。从跳窗救了我和我的Macbook!我已经将异常域从“ localhost”更改为Info.plist中的本地网络地址,因此无法解决。我为“ localhost”添加了一个块作为异常域,它起作用了。 (2认同)
  • `&lt;key&gt;NSExceptionDomains&lt;/key&gt; &lt;dict&gt; &lt;key&gt;localhost&lt;/key&gt; &lt;dict&gt; &lt;key&gt;NSExceptionAllowsInsecureHTTPLoads&lt;/key&gt; &lt;true/&gt; &lt;/dict&gt; &lt;/dict&gt;` 为我工作,但同样的想法 (2认同)
  • 谢谢,一个很好的提醒,拯救了我的一天。然而,为了解决没有捆绑 URL 存在的问题,我们只需要 localhost 的 NSExceptionDomains,如前面的评论所述。无需将 NSAllowsArbitraryLoads 设置为 true,因为它会完全关闭 ATS,并且在上传到 App Store 时您需要给 Apple 一个充分的理由。 (2认同)

Kho*_*hoa 17

原因:

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

解:

  • 确保所有相关的内容都与本机关闭(不是必需的,只是为了我的解决方案有一个干净的开始,在我的解释之后,你可以弄清楚这是否需要)
  • npm run startyarn start
  • 等待这个命令完成的工作(通常你会看到Loading dependency graph, done.)
  • 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 run-ios/androidreact-native init <app_name>,一切都运行良好.(因为自动启动功能和时间用于上面的状态的新建).
  • 其他"移除"解决方案起作用,因为它们迫使重建.

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


son*_*xqt 11

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


Kus*_*mal 11

尝试运行以下代码:

$ sudo xcodebuild -license

这可以解决问题。这对我有用。


小智 11

遵循以下步骤:

  • 使用 xcode 打开 ios 文件项目
  • 在项目包中删除 main.jsbundle 文件
  • 通过 main.jsbundle 名称添加新的空文件
  • 运行注释: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


Sea*_*nMC 10

我必须在单独的终端中运行“react-native start”。由于某种原因它没有运行

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

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


Viv*_*vek 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


小智 7

是什么解决了我:

  • 打开终端窗口
  • cdYOUR_PROJECT/ios
  • 删除构建文件夹 rm -r build
  • 再跑react-native run-ios一次

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

然后跑react-native run-ios.

资料来源:Andrew Bancroft


Ser*_*nci 7

确保.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>
Run Code Online (Sandbox Code Playgroud)

*(别忘了在发布版本中删除它..)


Pra*_*ghe 6

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

npm install

react-native run-ios
Run Code Online (Sandbox Code Playgroud)


小智 6

只需在终端中运行react-native start

cd your react native app directory/ react-native start 
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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


小智 5

对我来说问题是它无法创建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

这个问题现在正在发生在每个人身上,因为更新版本的反应alphas正在发布(特别是alpha.5),并且它们正在破坏反应本机构建.


小智 5

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

launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
Run Code Online (Sandbox Code Playgroud)

  • “这是 react-native v0.42.1 的一个问题。” - 它也存在于 v.0.43 中。 (3认同)

小智 5

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


Abr*_*esh 5

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

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


Ana*_*eru 5

我尝试了上述所有解决方案,但对我不起作用。这对我有用,如果上面的答案不适合您,您可以尝试一下。

  1. 在 Xcode 上打开项目工作区,然后删除main.jsbundle[PROJECT-NAME]/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 应用程序

我希望这对你有帮助。


azw*_*bar 5

我正在运行 iOS 模拟器,此方法有效:

1. 清理你的原生项目

1.a 对于Android项目

cd android
gradlew clean
Run Code Online (Sandbox Code Playgroud)

1.b 对于iOS项目

cd ios
xcodebuild clean
Run Code Online (Sandbox Code Playgroud)

2.清理你的reactnative缓存

2.a 如果您使用的是npm

  npm start -- --reset-cache
Run Code Online (Sandbox Code Playgroud)

2.b 如果您使用的是纱线

  yarn cache clean
Run Code Online (Sandbox Code Playgroud)

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


Abh*_*yMe 5

就我而言,我不小心从 Xcode 的构建阶段中删除了这个脚本。

所以,请确保有这个脚本。如果没有,只需单击“+”并选择“新运行脚本阶段”,然后粘贴以下代码。

export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述