【问题标题】:Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server无法从资产“index.android.bundle”加载脚本。确保您的捆绑包已正确打包,或者您正在运行打包服务器
【发布时间】:2017-12-01 09:34:26
【问题描述】:

我正在使用版本为 0.38.0 的 React Native 应用程序,当我尝试将其升级到 0.45.1 时,它显示以下错误

java.lang.RuntimeException: Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server.
at com.facebook.react.cxxbridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)
at com.facebook.react.cxxbridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl.java:198)
at com.facebook.react.cxxbridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:33)
at com.facebook.react.cxxbridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:216)
at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:994)
at com.facebook.react.ReactInstanceManager.access$600(ReactInstanceManager.java:109)
at com.facebook.react.ReactInstanceManager$4.run(ReactInstanceManager.java:746)
at java.lang.Thread.run(Thread.java:761)

我尝试了以下解决方案,但对我不起作用

SO: unable to load script from assets index.android.bundle on windows
SO: react native android failed to load JS bundle

【问题讨论】:

标签: android reactjs react-native


【解决方案1】:

1- 创建一个新文件夹 => android/app/src/main/assets
2-运行此命令=>

 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res  

此命令将创建 2 个文件:index.android.bundle & index.android.bundle.meta

3-运行命令=>react-native run-android

【讨论】:

  • react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res ---- 对我来说,我没有index.android.js,所以改成index.js,这个解决了我的问题。感谢您的回答!
  • @LiuWenbin_NO 我还需要稍微改变一下解决方案。我实际上是通过 Android Studio 部署的。然而,它确实按预期工作。
【解决方案2】:

添加这些行

project.ext.react = [ entryFile: "index.js", bundleAssetName: "index.android.bundle", bundleInAlpha: true, bundleInBeta: true ]

之前 apply from: "../../node_modules/react-native/react.gradle" 在 build.gradle 中

【讨论】:

    【解决方案3】:

    好的。每个答案都是唯一的,具体取决于问题发生时的“时间”和“版本”。

    今天是 2018 年 8 月 27 日(距离本页发布 1.2 年),我仍然 当我安装 react-native 并创建项目时发现了同样的问题 (在 windows 上)按照官方网站的说明进行操作。

    老实说,很难找到正确的答案让它像“今天”的“正常”一样工作,因为一切都发生了变化,与过去的时间不同。

    现在针对上述问题:无法从资产加载脚本 'index.android.bundle'。

    意味着我们在目录资产中没有请求的文件。这就是所有的问题!与端口、设备、模拟器等无关。

    现在我们需要做的是让文件“存在”。这些是您可以根据您的包配置执行的一些选项:

    如果目录中不存在所请求的目录“assets”,则创建目录 android/app/src/main/ 或者你可以在控制台输入:mkdir android/app/src/main/assets

    在你的项目目录中,执行:

    react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    

    如果文件已经存在,则检查资产文件夹。如果不, 然后尝试第二种方法:

    1 react-native start // open npm window popup
    
    2 curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
    

    如果文件已经存在,则检查资产文件夹。如果不, 那么你需要将你的项目降级到早期版本的包。 按照这5个步骤,必须一一完成:

    1 npm remove --save react-native
    2 npm i --save react-native@0.55.4
    3 npm remove babel-preset-react-native
    4 npm i --save babel-preset-react-native@2.1.0
    
    5 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    

    如果您已经在资产文件夹中拥有文件,那么您可以继续您的项目。

    检查您的设备是否已连接并准备就绪,然后运行-android:

    adb devices
    

    确保你得到这样的结果:

    List of devices attached
    cb8eca15        device
    

    然后运行:

    react-native run-android
    

    注意:或者,您可以使用指定的版本再次创建一个新项目:

    react-native init 项目名称 --version 0.55.4

    【讨论】:

      【解决方案4】:

      解决无法从资产 index.android.bundle 加载脚本 - React Native 遵循以下流程:

      您必须在您的 android 项目中手动创建目录资产或通过终端/CMD 使目录输入 mkdir android/app/src/main/assets

      如果创建成功则进入创建的目录

      运行第三步命令:

      react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
      

      现在你的文件夹中有你丢失的文件,你可以运行你的 React Native 项目 npm run android。

      https://stackoverflow.com/a/53275340/9489285

      【讨论】:

        【解决方案5】:

        在我的例子中,模拟器处于飞行模式。 确保您的模拟器或手机可以与 Metro 服务器通信。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-11-13
          • 1970-01-01
          • 2019-09-30
          • 2017-09-21
          • 2017-03-22
          • 1970-01-01
          相关资源
          最近更新 更多