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

我试图在我的设备上首次运行我的第一个反应原生项目(android 4.2.2)。

我得到:

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

我使用的命令:

  1. cd (project directory)
  2. react-native start
  3. react-native run-android

我在遵循React Native 教程 (在Linux上开发并针对Android)时遇到了同样的问题。

这个问题帮助我解决了以下步骤中的问题。

  1. (在项目目录中) mkdir 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
  3. react-native run-android

你可以通过将它们放在package.json scripts部分来自动执行上述步骤,如下所示:

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

然后你可以每次从你的命令行执行npm run android-linux

您可以按照官方页面上提到的指示来解决这个问题。 这个问题发生在真实的设备上,因为JS软件包位于您的开发系统上,而真实设备中的应用程序并不知道它的位置。

我遇到了一个真正的Android设备相同的问题。

解决scheme:基于Niltoid的这个答案

  1. find您的本地IP
  2. 打开应用程序,摇动你的Android设备
  3. 去开发设置和>debugging服务器…
  4. 粘贴您的IP和端口; XXXX:8088“(其中X是您的本地IP)

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

使用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/main/res
  • react-native run-android

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

确保你已经添加了/ path / to / sdk / platform-tools到你的pathvariables。

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

 /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 } 

如果您使用Windows,请按以下方式运行命令,或者如果出现错误“无法find条目文件index.android.js”

  1. mkdir android\app\src\main\assets
  2. 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

  3. react-native run-android

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

 JS server not recognized, continuing with build... 

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

 BUILD SUCCESSFUL 

问题可能是一些端口冲突(在我的情况下,这是我完全忘记了默认的IIS网站)。 这个问题的另一个performance就是未能在Chrome中打开http://localhost:8081/debugger-ui URL。

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

 Starting JS server... 

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

之后,您应该能够通过http://localhost:8081/debugger-ui在Chrome中打开debugging控制台。

如果你正在物理设备上运行你的应用程序,并得到这个错误

 unable to load script from assets index.android.bundle 

尝试运行命令:

 adb reverse tcp:8081 tcp:8081 

它为我工作…

在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 。 希望它有助于处于发展阶段的人。

操作系统:Windows

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

如果你注意到命令行宣布:“'adb'不是…”

所以这是我如何克服:
例子:我在D:\ Android \ sdk中安装了SDK
所以我会在System Variables 2中插入更多的行:

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

(如果你不知道如何编辑path系统variables,这里的主题: https : //android.stackexchange.com/questions/38321/what-do-i-type-in​​-path-variable-for-adb-服务器启动从cmd / 38324 )

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

它为我工作。

这个问题也可能是由于设备/仿真器的蜂窝数据被closures造成的。 确保你检查。

对于这个错误:“无法从资产加载脚本'index.android.bundle'”

1)。 检查“assets”文件夹:mkdir android \ app \ src \ main \ assets

如果文件夹不可用,请手动创build名称为“资产”的文件夹。 并在terminal执行Curl命令。

2)。 curl命令:curl“ http:// localhost:8081 / index.android.bundle?platform = android ”-o“android / app / src / main / assets / index.android.bundle”

它会自动在assets文件夹中创build“index.android.bundle”文件并解决问题。

3)。 react-native run-android

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

 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"; } }; 

尝试进行生产构build时可能将不得不恢复更改。

当我更新反应原生0.49.5,这个问题出现,当我跟着这个突破更改和弃用

它消失了。