首页 文章

本地反应'No bundle URL present'是什么意思?

提问于
浏览
114

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

enter image description here

30 回答

  • 2

    通过以下方式解决错误 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

  • 0

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

    Check this link for briefsreact-native init PropertyFinder 之后尝试使用 npm start (这个对我有用)

  • 1

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

    react-native upgrade
    

    发行于:https://github.com/facebook/react-native/issues/5090

  • 2

    按照错误消息中的说明:

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

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

    sudo xcodebuild -license
    

    它现在有效 .

  • 2

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

  • 2

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

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

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

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

  • 4

    原因:

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

    解:

    • 确保所有相关的内容都与本机关闭(不是必需的,只是为了我的解决方案有一个干净的开始,在我的解释之后,你可以弄清楚这是否需要)

    • 运行 npm run startyarn start

    • 等待这个命令完成的工作(通常你会看到 Loading dependency graph, done.

    • run react-native run-ios/android

    说明:

    • React Native包含2个部分:

    • 原生部分

    • Javascript部分

    • 构建命令:

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

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

    =>通常情况下,javascript部分先完成,然后是原生部分 . (根据他们使用的时间) .

    =>这仅适用于第一次构建(新构建) .

    =>重建:

    • 本机部分只需要10~15秒来检查更改,因为在构建和提供javascript部分之前,本机部分没有更改=>已完成 . (我不确定javascript部分是否重建但是它比原生部分需要很长时间)

    • 这就是为什么我们遇到这个问题,应用程序运行并且需要尚未存在的东西 .

    奖金:

    • react-native run-ios/android 将自动为您启动开发服务器 .

    • 这就是为什么当你在 react-native init <app_name> 之后运行 react-native run-ios/android 时,一切都运行良好 . (因为自动启动功能和时间用于上面的状态的新建) .

    • 其他"removing"解决方案有效,因为它们迫使重建 .

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

  • 4

    对我来说问题是它无法创建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),并且它们正在破坏反应本机构建 .

  • 11

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

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

    是什么解决了我:

    • 打开终端窗口

    • cdYOUR_PROJECT/ios

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

    • 再次运行 react-native run-ios

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

    然后运行 react-native run-ios again .

    资料来源:Andrew Bancroft

  • 2

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

  • 0

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

    你可以在 /ios/{}/Info.plist 找到该文件

    必须将localhost定义为异常请求目标,如下所示:

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

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

  • 4

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

  • 82

    检查您的网络代理,更好地关闭它 .

    或者你应该找到另一种维护打包服务器的方法

  • 9

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

  • 0

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

  • 58

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

  • 2

    在info.plist中的NSExceptionDomains dict中检查你的'localhost'密钥

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

  • 14

    大多数情况下,当DNS查找/ IP查找无法找到localhost时,会出现此问题 .

    Solution :

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

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

    127.0.0.1 localhost

    255.255.255.255 broadcasthost

    :: 1升 . ocalhost

    To confirm this is the issue 你可以在safari上点击捆绑网址(如果你在chrome中尝试它会解决但safari将无法解决它) . http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false

  • 25

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

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

  • 0

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

    npm install
    
    react-native run-ios
    
  • 2

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

    • 假设您在 node v6.9.5 中运行 npm install -g react-native-cli .

    • 现在通过运行 nvm alias default 6.9.5node v6.9.5 设为默认值

    • 现在运行 react-native run-ios

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

  • 5

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

  • 15
    • 检查您的主机 127.0.0.1 localhost 是否未删除

    • 检查是否未设置网络代理

    • 然后 npm installreact-native upgrade 重置您的项目

  • 2

    我正在使用 RN 0.49.5 . 我've tried lots of methods, but no one works. Finally i worked this out. It'简单易行 .

    主要想法是将 localhost 更改为 127.0.0.1 ,但's not where the RN tells you. It'中的's not where the RN tells you. It' .

    代码更改: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 这对模拟器来说没问题 . 如果它's device, just change the ip address to your machine' s .

  • 3

    这是因为您的客户端无法访问您的打包服务器 .

    如果你像我一样是中国编码员,我想你可能会使用VPN通过GFW . 当您的VPN工具处于“全局模式”时,您的所有请求都将遍布全球,无法获得localhost

    尝试'自动代理模式' .

    如果您不是来自中国,或者您的VPN设置是已经'自动代理模式',我建议你关闭你的打包服务器,然后再试一次 .

  • 0

    另一件适合我的方法是在xcode中打开项目,然后清理并构建它 . 通常它重新运行打包服务器并解决问题 .

  • 4

    ...发生这种情况的另一个原因是,如果你已经安装了Visual Studio Code React Native Tools但是你一直试图在终端中使用react native:它将在第一次工作但它会停止并显示红色无捆绑屏幕 .

    从vscode发布反应原生代码完美地工作...

  • 0

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

相关问题