无法从资产“index.android.bundle”加载脚本。确保你的包被正确打包或者你正在运行打包服务器

IT技术 android reactjs react-native
2021-05-04 15:47:52

我正在使用版本为 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:无法从 windows 上的 assets index.android.bundle 加载脚本
SO:react native android failed to load JS bundle

4个回答

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

添加这些行

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

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

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

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

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

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

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

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

如果目录 android/app/src/main/ 中不存在,则创建目录“assets”,或者您可以在控制台中键入: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 ProjectName --version 0.55.4

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

您必须在您的 android 项目中手动创建目录资产或通过终端/CMD 创建目录输入 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