无法加载脚本。请确保您正在运行Metro服务器,或者已正确捆绑了软件包“ index.android.bundle”以进行发布

react-native run-android通过在android模拟器中留下一条消息来终止命令。消息如下

“无法加载脚本。请确保您正在运行Metro服务器,或者已正确捆绑了软件包'index.android.bundle'以进行发布。”

我完全困惑我做错了什么。


编辑:添加错误屏幕截图

在此处输入图片说明

老丝泡芙2020/03/11 17:58:19

在Metro黑名单中更新此部分

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
凯飞云2020/03/11 17:58:18

在某些情况下,您可能想关闭React-native捆绑程序的端口并使用相同的过程重新运行应用程序

1.sudo kill -9 $(sudo lsof -t -i:9001)

2.npm start inside the project

3. react-native run-android
伽罗2020/03/11 17:58:18

对我有用的是:

  1. 关闭所有控制台
  2. 打开一个新的控制台
  3. $ adb devices
  4. 确保只连接了一个设备
  5. $ react-native run-android
Davaid泡芙2020/03/11 17:58:18

就我而言,我已经在模拟器中设置了代理。删除该代理后,它可以恢复正常。

SamStafan2020/03/11 17:58:18

模拟器上的错误消息有点令人误解。就我而言,我使用的是Macbook。我需要通过运行来更改android / gradlew的权限$ chmod 755 ./gradlew,然后才能构建该应用并将其部署到android模拟器。

Green小小古一2020/03/11 17:58:18

默认情况下,名为“ Metro Server”的微型JavaScript服务器在端口8081上运行。

您需要使此端口可用于此服务器启动。所以,

  1. 释放端口
  2. 关闭您的虚拟设备
  3. 再次点击“ react-native run-android”。

如何释放端口?

http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html

如何使用Windows上的localhost上的端口杀死当前进程?

最重要的是,我按照facebook @ https://facebook.github.io/react-native/docs/getting-started的建议将节点版本从8.x升级到10.x(最新)。

Pro小胖2020/03/11 17:58:18

如果您在Linux OS上运行,则可能会导致npm远程服务器未运行。打开另一个终端(带有项目目录)并在执行sudo react-native run-android之前运行此命令sudo npm startsudo react-native start

ItachiStafan2020/03/11 17:58:18

重要信息-您的环境中可能有许多虚拟设备。确保如果要更改AVD,请再次重复设置。

调试信息-

如果遇到上述错误,则必须首先验证端口8081上正在运行什么

查找最快的方法是在终端中使用以下命令

netstat -aon | findstr 8081

如果那向您显示某些信息,则表明该端口已被阻止。如果可能,请将该端口畅通无阻。

否则,您将需要更改端口。Naveen Kumar在上面的评论中已经提到了这样做的过程

react-native run-android --port=9001

确保也不使用9001 :)

Gil伽罗小宇宙2020/03/11 17:58:18

如果您使用的是Linux,请从App根目录打开终端并运行

npm start

然后打开另一个终端窗口并运行:

reactive-native run-around
Gil伽罗2020/03/11 17:58:18

对我来说,这个问题始于升级本机。升级是添加64位支持所必需的。

Before:
-------- 
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245

Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1

After:
------
info 
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0 
react-native: 0.59.9 => 0.59.9 
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

另外,我为升级所做的一项重要更改是在../android/build/build.gradle中

android {
    ...
    defaultConfig {
        ...
        targetSdkVersion 28
        ...
    }
    ...
}

当我尝试将build(.apk)上传到goole播放控制台时,在出现警告后,我不得不将targetSdkVersion从27更改为28。我几乎没有意识到这是上述错误的根本原因。立即使用@tom和@tinmarfrutos回答绝对有道理。

我通过将android:usesCleartextTraffic =“ true”添加到我的android / app / src / debug / AndroidManifest.xml中解决了该问题

乐米亚2020/03/11 17:58:18

此错误的可能性也是错误的路径,请检查一次

 export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
 export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
A小卤蛋Pro2020/03/11 17:58:18

我遇到这种情况是因为我的Wifi错误地在模拟器上关闭了。我重新打开它,并且开始工作正常。希望对某人有帮助

凯梅小胖2020/03/11 17:58:18

我只想添加一个在这里没有涉及的非显而易见的可能性。我正在使用@ react-native-community / netinfo来检测网络更改,主要是网络状态。要测试网络关闭状态,需要关闭(仿真器上的)WIFI开关。这也有效地切断了仿真器和调试环境之间的桥梁。测试后,我没有重新启用WIFI,因为我不在电脑旁,回来后立即忘记了它。

其他人也可能会遇到这种情况,值得在采取任何其他严厉措施之前进行检查。

神无老丝Davaid2020/03/11 17:58:18

请尝试以下方法。

  1. 删除Android和IOS文件夹
  2. 运行本机弹出
  3. 运行react-native run-android

也许在前面的步骤之后,您已经执行了npm start---reset-cache

我工作,希望对您有帮助。

宝儿Davaid2020/03/11 17:58:18

适用于我的解决方案如下:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
]; 

我的代码示例

Gil伽罗2020/03/11 17:58:18

我也遇到了这个问题。我解决了以下步骤。

Environment Veritable中检查android sdk路径

添加 ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk系统变量
C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools路径系统变量

在下面的代码段中替换sharedBlacklist

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

node_modules / metro-config / src / default / blacklist.js中

然后运行npx react-native run-android --port 9001

快乐编码..!

Davaid阳光小卤蛋2020/03/11 17:58:18

我遇到了同样的麻烦,对我来说,问题是adb不在正确的环境路径中,错误告诉您是地铁端口,而当您处于adb中时,端口将被杀死并重新启动。

添加环境变量(ADB)

  1. 开放环境变量
  2. 从第二帧PATH变量中选择,然后单击下面的编辑选项
  3. 点击添加选项
  4. 提交sdk平台工具路径C:\ Users \ My User \ AppData \ Local \ Android \ Sdk \ platform-tools

注意:或取决于adb.exe在计算机中的位置

  1. 保存更改

再次运行android build

$ react-native run-android

要么

$ react-native start

$ react-native run-android
理查德神乐老丝2020/03/11 17:58:18

我对此的解决方案如下:

启动Metro服务器

$ react-native start

启动Android

$ react-native run-android

如果看到错误消息“端口8081已在使用中”,则可以终止该进程并重新运行

$ react-native start

参见 React Native故障排除页面

番长西里神无2020/03/11 17:58:18

下班后寻找答案。解决方案是将节点降级到版本12.4。

在我的情况下,我意识到该错误仅发生在版本本机0.60和节点版本12.6之间的错误中。

小小卡卡西小卤蛋2020/03/11 17:58:18

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

如果您正确执行正常的运行命令,这就是您要解决的问题

  1. npm安装
  2. 反应性开始
  3. react-native运行Android

并像这样修改您的android清单文件。

<application
    android:name=".MainApplication"
    android:icon="@mipmap/ic_launcher"
    android:usesCleartextTraffic="true" // add this line with TRUE Value.
android:theme="@style/AppTheme">
逆天乐2020/03/11 17:58:18

在尝试了几种方法后,这对我有用。

在文件中 node_modules\metro-config\src\defaults\blacklist.js

更换:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

与:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

希望这可以帮助。

满天星2020/03/11 17:58:18

如果您正确配置了所有内容,请尝试以下操作:

亚行反向tcp:8081 tcp:8081

为什么?“当RN打包程序运行时,您的浏览器中将有一个活动的Web服务器,其访问位置为127.0.0.1:8081。正是通过此服务器为您的应用程序提供了JS捆绑包,并在您进行更改时对其进行了刷新。如果没有反向代理,您的电话将无法连接到该地址。”

所有学分归功于Swingline0

Davaid神无2020/03/11 17:58:18

在尝试解决我的工作空间中的问题后,我找到了解决方案。

此错误是因为Metro使用NPM和Node版本的某些组合存在问题。

您有2种选择:

  • 备选方案1:尝试更新或降级npm和节点版本。
  • 替代方法2: 转到此文件:\node_modules\metro-config\src\defaults\blacklist.js并更改此代码:

    var sharedBlacklist = [
      /node_modules[/\\]react[/\\]dist[/\\].*/,
      /website\/node_modules\/.*/,
      /heapCapture\/bundle\.js/,
      /.*\/__tests__\/.*/
    ];
    

    并更改为此:

    var sharedBlacklist = [
      /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
      /website\/node_modules\/.*/,
      /heapCapture\/bundle\.js/,
      /.*\/__tests__\/.*/
    ];
    

    请注意,如果您运行npm install,则yarn install需要再次更改代码。

乐猪猪2020/03/11 17:58:17

我发生了类似的问题显然,Mcafee封锁了8081端口,这花了我几个小时才弄清楚

尝试跑步 react-native run-android --port=1234

当应用程序在模拟器上显示错误时,进入开发设置(可通过单击crtl + M进行访问)

将“调试设备的服务器主机和端口”更改为“ localhost:1234”

关闭应用程序,然后从应用程序抽屉启动它

希望对您有帮助!!

LEYJim2020/03/11 17:58:17

只需在其中添加三个启动器:node_modules \ metro-config \ src \ defaults \ blacklist.js

替换此部分:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
西门神奇2020/03/11 17:58:17

首先执行步骤4和5,即可运行您的项目。

If you do not get the result (with steps 4 and 5) do the following steps

1- Try to downgrade your Node version (current version is 12.13.1)

  choco uninstall nodejs
  choco install nodejs --version 12.8

2- Add the path of npm module (C:\Users\your user name\AppData\Roaming\npm) to system variables instead of user variables

3- Install react native globally by using command

  npm install -g react-native-cli

4- Go to the root of your project directory and run the following command :

  react-native start

5- Open another terminal in the root of your project and run the following command :

   react-native run-android 

EDIT :

You are using Genymotion ? If yes, do the following step :

After above step if you get the following error ?

error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.

Open your genymotion and go to :

genymotion菜单- >设置- > ADB - > 然后选择使用定制的Android SDK工具(点击浏览找到SDK的位置)

最后,再次运行您的项目..

神奇老丝2020/03/11 17:58:17

您可以尝试以下方法:

在您的AndroidManifest.xml上添加此行

<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>
村村AL2020/03/11 17:58:17

对我来说,这个错误是由react-native的升级引起的

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

如果签出升级差异,则需要创建调试清单 android/app/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:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>

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

https://react-native-community.github.io/upgrade-helper/

十三古一2020/03/11 17:58:17

这些步骤确实对我有帮助:

步骤1:在android / app / src / main / assets中创建目录

Linux命令mkdir android/app/src/main/assets

第2步:index.android.js(在根目录中)重命名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

步骤3: 建立APK:react-native run-android

请使用最新版本的index.js。

请享用 :)

卡卡西逆天2020/03/11 17:58:17

您尚未启动捆绑器。在之前运行npm startreact-native start在项目的根目录中react-native run-android