无法从资产&index; .android.bundle'加载脚本。确保捆绑包正确打包或您正在运行打包服务器

时间:2017-06-28 06:46:10

标签: android reactjs react-native

我正在使用版本为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

6 个答案:

答案 0 :(得分:25)

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- run command => react-native run-android

答案 1 :(得分:4)

添加这些行

.mydiv { height: 40px; width: 50px; background-color: red; } @media screen and (min-width : 500px) { .mydiv { background-color: blue; } }

之前 project.ext.react = [ entryFile: "index.js", bundleAssetName: "index.android.bundle", bundleInAlpha: true, bundleInBeta: true ]在build.gradle

答案 2 :(得分:2)

好的。根据问题发生时的“何时”和“版本”,每个答案都是唯一的。

  

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

说实话,很难找到正确的答案,使它像“今天”的“正常”工作一样,因为一切都已经改变,并且与被抛弃的时间不同。

  

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

意味着我们没有目录资产中所要求的文件。这就是所有的问题!与端口,设备,仿真器等无关。

现在,我们需要做的是使文件“存在”。这些是您可以执行的一些选择,具体取决于您的软件包配置:

  

如果目录中不存在目录,请创建目录“资产”   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初始ProjectName-版本0.55.4

答案 3 :(得分:0)

要解决无法从资产index.android.bundle加载脚本-React Native,请执行以下过程:

您必须在android项目中手动创建目录资产,或通过Terminal / CMD输入Directory进入mkdir android / app / src / main / assets

如果已成功创建目录,请转到创建的目录

运行第3步命令:

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

答案 4 :(得分:0)

就我而言,仿真器处于飞行模式。 确保您的模拟器或手机可以与Metro服务器通信。

答案 5 :(得分:-1)

新版本的react-native没有index.android.js文件作为条目文件,它应该使用index.js文件