ChatGPT解决这个技术问题 Extra ChatGPT

无法从 Windows 上的资产 index.android.bundle 加载脚本

我正在尝试第一次在我的设备(Android 4.2.2)上运行我的第一个 React Native 项目。

我得到:

无法从资产 index.android.bundle 加载脚本

我使用的命令:

cd (项目目录) react-native start react-native run-android

在尝试杰里的答案之前,首先检查您是否在环境变量和路径平台工具中设置了 ANDROID_HOME。
这是最新版本中的一个错误。您必须通过使用 react-native init ProjectName --version=0.55.4 来使用以前的版本,该问题应该已解决。
相同的错误,相同的上下文,但修复很简单:等待调试服务器从 Loading dependency graph... 更改为 Loading dependency graph, done,然后在应用程序上点击重新加载。
公认的答案是非常不方便的 hack,它使构建过程和代码库变得复杂。这里有更好的答案。
使用 mkdir ... /assets && react-native bundle --platform.. 不能完全解决这个问题,请检查:stackoverflow.com/a/55511803/10139109

M
Muhammad Atallah

我在关注 React Native tutorial(在 Linux 上开发并针对 Android)时遇到了同样的问题。

issue 帮助我通过以下步骤解决了问题。

(在项目目录中) 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 run-android

您可以通过将上述步骤放置在 package.jsonscripts 部分来自动执行这些步骤,如下所示:

"android-linux": "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 run-android"

然后,您每次都可以从命令行执行 npm run android-linux


如果我们想修改文件 index.android.js 怎么办?每次在终端中,我们都必须插入命令 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
每次我从终端重新运行它时它都会卡在 Loading dependency graph... 并且需要太多时间。仅供参考,我正在使用 ubuntu 14.04
React native 较新版本不包含 index.android.js,因此请使用 App.js 和命令。 :) 谢谢
@ChinthakaDinadasa 在我的情况下,它是 index.js,而不是 App.js
这家伙需要雕像!我的意思是它不仅在 linux 上有效,而且在 windows 10 上也有效
A
Axel

如果您在物理设备上运行应用程序并收到此错误

unable to load script from assets index.android.bundle

尝试运行命令:

adb reverse tcp:8081 tcp:8081

它对我有用...


这解决了我的问题!谢谢!
为我工作。对于那些在 windows 终端路径上没有 android 平台工具的人,adb 可执行文件位于 `C:\Users\YourUser\AppData\Local\Android\sdk\platform-tools`
我认为这应该是正确的答案,另一个似乎是黑客。
这为我解决了这个问题(Windows,在物理设备上运行应用程序)。这是红色错误框上的建议修复之一。
它适用于我在 macOS 上,但我每次重新插入设备时都必须运行它。有没有办法让这个永久?
n
neurosnap

我花了几个小时试图解决这个问题。我的问题不是特定于 Windows,而是特定于 Android。

访问开发服务器在本地和模拟器的浏览器中工作。唯一不起作用的是访问应用程序中的开发服务器。

从 Android 9.0(API 级别 28)开始,默认情况下禁用明文支持。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

查看更多信息:https://stackoverflow.com/a/50834600/1713216


谢谢你。这是我将 targetSdkVersion 升级到 28 后的问题。
这是正确的答案。它实际上解决了网络通信问题。
这是解决方案 used in React Native v0.59.2
感谢您对此进行标记 - 完全阻止了我的 RN 应用程序加载。令人失望的是没有更好的错误消息:/
令人震惊的是,这里所有不同的答案似乎都解决了完全相同的错误消息。使调试更加耗时和痛苦。这个答案对我有用!谢谢@neurosnap
I
IgorGanapolsky

使用 npm 版本 4.3.0 react-native-cli 版本 2.01 react-native 版本 0.49.5

在项目目录中,

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 /主/资源

react-native run-android

文件名已从 index.android.js 更改为 index.js


有点遗憾的是 FB 发布了一个新版本,而不是修复这个错误 - 这显然会影响到很多人 - 他们打破了公认的解决方法!
@IgorGanapolsky 确保您的资产文件夹中有一个 index.bundle 文件
@DarshanPania 该文件有什么作用?
@IgorGanapolsky 该JS文件是您应用程序的入口点。从 RN 0.49 开始,只有一个文件 index.js 而不是 index.android.jsindex.ios.js
对于 Linux:sudo 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
M
Milon

我在使用真正的 android 设备时也遇到过同样的问题。

解决方案:基于 Niltoid 的 answer

找到您的本地 IP 打开应用程序并摇动您的 Android 设备 Go Dev Setting and>Debug Server... 粘贴您的 IP 和端口; XXXX:8088"(其中 X 是您的本地 IP)

对于 Mac 用户:打开您的网络首选项,在这里您将获得您的本地 IP。


为我工作(y)
L
Led Machine

如果您使用的是 Windows,请按以下方式运行命令,或者如果您收到错误“找不到条目文件 index.android.js”

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 run-android


S
Srinivas

在 mac 中遇到了同样的问题,花了 2 天后,我终于可以正常工作了。

Emulator cellular data was turned off 开始,我得到了 unable to load script from assets index.android.bundle make sure your bundle is running

通过执行此程序包服务器确保您的 Emulator cellular data is turned on 能够捆绑 index.android.js。希望它对处于开发阶段的人有所帮助。


你是什么意思Emulator cellular data is turned on?哪里是?虚拟设备?真机?
Emulator 是指来自 android studio 的虚拟设备。
谢谢,出于某种奇怪的原因,我的模拟器损坏了,wifi 也不见了。救了我。
D
David Liu

您可以按照 official page 中提到的说明解决此问题。此问题发生在真实设备上,因为 JS 包位于您的开发系统中,而您真实设备中的应用程序不知道它的位置。


直接从android studio运行时我遇到了这个问题。使用 react-native run-android 修复它
您的链接不再有效,您应该在将来参考关键有用的部分,以在其来源死亡后保持信息的活力。
那么如何在真实设备上运行呢?
@IgorGanapolsky 我有同样的问题并用官方文档修复了它,您可以轻松检查您的环境facebook.github.io/react-native/docs/running-on-device.html我无法从 android studio(和 android 文件夹)加载 porj,但我可以使用项目和终端的根文件夹来完成。
顺便说一句,答案中给出的链接已过期..仅供参考。
J
Jesse Onolemen

我已经有同样的问题好几个月了。我最初使用@Jerry 的解决方案,但这是一个错误的解决方案,因为它没有完全解决问题。相反,它所做的是将每个构建都视为生产构建,这意味着您在应用程序中所做的任何细微更改都意味着需要重新构建整个应用程序。

虽然这是一个临时解决方案,但从长远来看,它的效果非常糟糕,因为您不再能够利用 React Native 的惊人开发工具,例如热重载等。

一个合适的解决方案如下所示:

在您的 MainApplication.java 文件中,替换以下内容:

@Override
public boolean getUseDeveloperSupport() {
    return BuildConfig.DEBUG;
}

@Override
public boolean getUseDeveloperSupport() {
    return true;
}

由于某种原因 BuildConfig.DEBUG 总是返回 false 并导致资产目录中的捆绑文件。

通过手动将此设置为 true,您将强制应用程序使用打包程序。这在生产中不起作用,因此请务必将其更改为 false 或默认值。

别忘了也跑

$ adb reverse tcp:8081 tcp:8081

天哪,这是实际的解决方案。接受的答案不适用于热重新加载,并且绝不是对该问题的合法解决方案。
这应该是答案!整晚都在试图解决这个问题,但没有运气。谢谢,杰西!顺便说一句,BuildConfig.DEBUG 值实际存储在哪里?
m
mukeshmandiwal

1 转到您的项目目录并检查此文件夹是否存在 android/app/src/main/assets

如果存在,则删除两个文件,即 index.android.bundle 和 index.android.bundle.meta 如果文件夹 assets 不存在,则在那里创建 assets 目录。

2.从你的项目根目录做

cd android && ./gradlew clean

3.最后,导航回根目录并检查是否有一个名为index.js的条目文件

如果只有一个文件,即 index.js 则运行以下命令 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.ios.js 然后运行这个 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 现在运行 react-native run-android

现在运行 react-native run-android


在尝试了几乎所有这些场景之后......这是唯一对我有用的解决方案。谢谢!!!!
在遵循 Ubuntu 18.04 上的入门指南遇到此错误后,这对我有用。谢谢!
J
Jew

操作系统:Windows

尝试上述两种方法后解决此问题的另一种方法(因为我安装的 SDK 不在 DEFAULT LOCATION 中,例如 C:\users\"user_name"\appdata\local\sdk)

如果您注意到命令行宣布:“'adb' 不被识别为内部或外部命令......”

所以这就是我克服的方法: 示例:我在 D:\Android\sdk 中安装了 SDK 所以我将在系统变量中插入路径 2 多行:

D:\Android\sdk\tools  
D:\Android\sdk\platform-tools  

(如果您不知道如何编辑路径系统变量,这里是主题:https://android.stackexchange.com/questions/38321/what-do-i-type-in-path-variable-for-adb-server-to-start-from-cmd/38324

然后我再次运行 cmd:react-native run-android

它对我有用。


即使它没有真正连接 - 这是非常常见的问题之一,它的工作原理与 Thien 描述的一样
P
Poonam

就我而言,我已从 MainApplication.java 中删除了以下行。 (这是我之前错误添加的。):-

导入 com.facebook.react.BuildConfig;

之后清理项目并点击命令

react-native run-android


谢谢,它也对我有帮助。
K
Keet Sugathadasa

我也遇到了这个问题,因为当我在模拟器上运行项目时它工作正常,但在真实设备上它给出了这个错误。所以我通过以下解决方案解决了这个问题

第一步:首先打开 cmd 并转到您的 SDK 管理器 Platform-tools 文件夹

cd C:Development\Android\Sdk\Platform-tools

第二步:现在运行这个命令:

adb devices

执行此命令后,检查命令提示符中列出的设备

第三步:现在运行这个

adb reverse tcp:8081 tcp:8081

现在您的设置已完成

第 4 步:转到您的项目目录并运行此命令

react-native run-android

G
Gurbela

对于IOS:

在终端中:

cd ios

删除构建文件夹: rm -r build

再次运行: react-native run-ios

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

然后再次运行:react-native run-ios

对于安卓:

在终端中:

cd android/app

删除构建文件夹: rm -r build

再次运行: react-native run-android

或者,您可以打开 Finder,导航到 YOUR_PROJECT/android/app 并删除构建文件夹。

然后再次运行:react-native run-android


适用于安卓系统!干净方便!
在 Windows 上删除 android/app/bin 文件夹也有效。我直接从 Android Studio 构建了项目,而不是运行 react-native run-android,它似乎构建了一些错误,我不得不手动删除。
C
Chheng Chansopheaktra

对于这个问题,我只是通过运行来解决它:

react-native start

然后

adb reverse tcp:8081 tcp:8081

在命令行上。然后我可以运行:

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

每次。


H
Harat

Ubuntu

第一次,我使用 react-native init project-name 创建了新应用。我得到了同样的错误。所以我执行以下步骤来解决这个问题。

在我的情况下,首先运行 sudo chown user-name-of-pc /dev/kvm 。从 Android 手机调试时,选择使用 USB 传输照片 (PTP)。在 project-name/android/app/src/main 中创建文件夹资产,确保 index.js 在您的项目根目录中可用,然后在 cd project-name 目录之后从控制台运行以下命令。

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 /主/资源

或者对于 index.android.js 然后

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

在 android-studio/bin 目录中运行命令 ./studio.sh。它将打开 Android Studio。运行命令 react-native run-android。

https://i.stack.imgur.com/16TBn.jpg


d
dytra

确保 Metro Builder 正在运行以使您的物理设备和服务器同步

首先,运行这个命令来运行 Metro Builder

npm 开始

然后你可以在 react native 中开始构建

react-native run-android

这次他们应该没有错误。如果您希望您的代码在更改时实时重新加载。摇动您的设备,然后点击启用实时重新加载


m
mchouhan_google

确保已将 /path/to/sdk/platform-tools 添加到路径变量中。

当您运行 react-native run-android 时,它会运行 adb reverse tcp:< device-port > tcp:< local-port > 命令将请求从您的设备转发到在您计算机上本地运行的服务器。如果找不到 adb,您将看到类似的内容。

/bin/sh: 1: adb: not found
Starting the app (.../platform-tools/adb shell am start -n 
com.first_app/com.first_app.MainActivity...
Starting: Intent { cmp=com.first_app/.MainActivity }

这应该是最受好评的答案,因为应该是首先要检查的事情之一
L
Lindoélio Lázaro

它可能是由 React Native 项目代码库中未链接的资产引起的,例如,当您重命名项目应用程序/捆绑包 ID 或添加外部包时未正确链接它。

只需在您的项目根目录中尝试:

react-native link

react-native run-android

j
jsbeckr

如果您在主 AndroidManifest.xml 中定义 android:networkSecurityConfig,也会出现此问题。调试 AndroidManifest.xml 中的 android:usesCleartextTraffic="true" 将被忽略。

要解决此问题,您必须将应用程序配置为允许到 localhost 的 http 流量。

创建文件 android/src/debug/res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

并在 android/src/debug/AndroidManifest.xml 中引用它:

<?xml version="1.0" encoding="utf-8" ?>
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    <application 
        android:networkSecurityConfig="@xml/network_security_config" 
        tools:targetApi="28" 
        tools:ignore="GoogleAppIndexingWarning" />
</manifest>

更多信息在这里:https://medium.com/astrocoders/i-upgraded-to-android-p-and-my-react-native-wont-connect-to-my-computer-to-download-index-delta-42580377e1d3


这是正确的。这发生在我为某些域设置网络配置文件之后。所以我们还需要设置localhost。谢谢你。
m
mp31415

如果在运行 react-native run-android 命令时,跟踪的第二行是

JS server not recognized, continuing with build...

这意味着应用程序的打包程序无法启动,如果没有一些额外的步骤,应用程序将无法加载。请注意,跟踪结束仍然报告成功:

BUILD SUCCESSFUL

问题可能是一些端口冲突(在我的情况下,它是我完全忘记的默认 IIS 站点)。该问题的另一种表现形式是无法在 Chrome 中打开 http://localhost:8081/debugger-ui URL。

解决端口冲突后,跟踪将报告

Starting JS server...

然后将打开一个额外的节点窗口 (node ...cli.js start),应用程序将成功加载/重新加载。

之后,您应该可以使用 http://localhost:8081/debugger-ui 在 Chrome 中打开调试控制台。


n
nimgrg

即使在模拟器上运行,我也遇到了同样的问题。我做了一个快速的解决方法,以便我可以拥有正常的开发工作流程。

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
  @Override
  public boolean getUseDeveloperSupport() {
    // return true here to load JS from the packager
    // BuildConfig.DEBUG for me was set to false which meant it
    // it was always trying to load the assets from assets folder.
    return true;
  }

  @Override
  protected String getJSMainModuleName() {
    return "index";
  }
};

在尝试进行生产构建时可能必须恢复更改。


佚名

我在我的 mac 上遇到了 McAfee 阻塞端口 8081 的问题,不得不将其更改为 8082。

首先运行你的包服务器:

react-native start --port 8082

打开另一个终端,像往常一样启动安卓应用:

react-native run-android

完成后,现在重写 adb 隧道的 tcp 端口:

adb reverse tcp:8081 tcp:8082

查看 adb tcp 隧道列表:

adb reverse --list

您现在应该会看到一条温馨的消息:

(reverse) tcp:8081 tcp:8082

转到您的应用程序并重新加载,完成!

PS:不要更改应用程序开发设置中的任何内容,如果您添加了“localhost:8082”,只需将其删除,将其留空。

编辑:对于所有 McAfee 受害者,如果您具有 root 访问权限,则有更简单的解决方案,只需暂时终止位于端口 8081 上的 McAfee 进程,根本不需要更改端口:

sudo launchctl remove com.mcafee.agent.macmn

S
Sudhanva Patil

我认为你没有安装纱线尝试用巧克力或其他东西安装它。它应该在创建项目之前安装(react-native init 命令)。

无需创建资产目录。

如果不起作用,请回复。

编辑: 在最新版本的 react-native 中,他们已经修复了它。如果您想完全摆脱这个只是卸载节点(要完全卸载 Completely remove node,请参阅此链接)并重新安装节点,react-native-cli 然后创建您的新项目。


N
Nguyễn Phúc

不要忘记在模拟器设备中打开互联网,我解决了这个错误,它运行完美:VI 收到此错误,因为我关闭互联网以测试 NetInfo:D


s
sumit kumar pradhan

这是一条一般性的错误信息,您可能在 react native 应用程序开发过程中遇到过。因此,在本教程中,我们将为这个问题提供解决方案。

问题描述:无法从 windows 上的资产 index.android.bundle 加载脚本 无法从 windows 上的资产 index.android.bundle 加载脚本

请按照以下步骤解决上述问题:

第 1 步:在项目目录中创建“assets”文件夹现在在项目目录中创建 assets 文件夹,即“MobileApp\android\app\src\main”。您可以手动创建资产文件夹:

< 或 >

您也可以使用命令创建文件夹。命令:mkdir android/app/src/main/assets

第 2 步:运行您的 React Native 应用程序让我们运行以下命令在模拟器或物理设备中运行 React Native 应用程序。

切换到项目目录。 cd 移动应用程序

运行以下有助于捆绑您的 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 /主/资源

运行最后一步以在模拟器或物理设备中运行本机应用程序。 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 && react-native run-android

< 或 >

您可以通过将它们放在 package.json 的脚本部分中来自动化上述步骤,如下所示:

"android-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 && react-native run-android"

如果一切设置正确,您应该很快就会看到您的新应用程序在您的 Android 模拟器中运行。


b
bhw1899

我刚刚遇到完全相同的问题并解决了它。所以希望能有所帮助。

假设您正在组装发布应用程序包 (.apk)

检查您的资产文件夹是否存在?:\android\app\src\main\assets 如果不存在,请创建一个。执行“Assemble Release”后,检查该文件夹(\android\app\src\main\assets)是否有任何东西,如果没有,找到js bundle文件(index.android.bundle),它应该在多个以下路径:*a)\android\app\build\intermediates\merged_assets\release\out\index.android.bundle b)\android\app\build\intermediates\merged_assets\release\mergeReleaseAssets\out\index.android。包 c)\android\app\build\intermediates\assets\release\index.android.bundle d)\android\app\build\generated\assets\react\release\index.android.bundle*

更好的方法是使用“Everything”来搜索文件名:index.android.bundle。

然后将此文件复制到你的资产文件夹(\android\app\src\main\assets\index.android.bundle)回到powershell或命令控制台,执行:

react-native run-android --variant=release

它应该工作。

祝你好运!


非常感谢!奋斗了三天! Btw react native 0.59 解决了这个问题。
D
Danish Hassan

我花了半天时间解决这个问题......

如果您使用的是 28.0.0 以上的 API 目标版本,那么您可能会遇到此问题。

只需添加这一行

android:usesCleartextTraffic="true"

在您的清单应用程序块中。

清单应用程序块代码。

 <application
        ....
        android:usesCleartextTraffic="true"
.../>

A
Ahmad Khani

实际上,在我的情况下(React-native 版本 0.61.5 并尝试在设备上安装调试 APK)没有一个答案对我有帮助,我的解决方案是像这样将 bundleInDebug: true 添加到 android/app/build.gradle

project.ext.react = [
    entryFile: "index.js",
    enableHermes: true,  // clean and rebuild if changing
    bundleInDebug: true
]

谢谢,它解决了问题但是现在我不能使用快速刷新选项
谢谢-这仍然有意义-2022年吗? expo 不使用这个 project.ext.react 并且事情发生了变化......
c
chii

当我将 react-native 更新到 0.49.5 时,出现了这个问题,当我遵循这个 Breaking changes and deprecations

它消失了。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅