首页 文章

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

提问于
浏览
8

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

4 回答

  • 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.bundleindex.android.bundle.meta

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

  • 2

    添加这些行

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

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

  • 24

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

    今天是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 ProjectName --version 0.55.4

  • -1

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

相关问题