无法加载脚本。确保您正在运行 Metro 服务器,或者您的包“ index.android.bundle”已经正确打包以便发布

react-native run-android命令通过在 android 模拟器中留下一条消息而结束。该消息如下:

无法加载脚本。确保您正在运行 Metro 服务器,或者您的包“ index.android.bundle”已经正确打包以便发布。

Screenshot

我做错了什么?

243395 次浏览

你还没有启动捆扎机呢。在项目的根目录下,在react-native run-android之前运行npm startreact-native start

类似的问题也发生在我身上 显然Mcafee阻塞了8081端口。

尝试运行:

react-native run-android --port=1234

当应用程序在模拟器上显示错误时,进入开发设置(Ctrl+)。

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

关闭应用程序,并从应用程序抽屉启动它。

——< p >重要 您的环境中可能有许多Virtual设备。如果您正在更改AVD,请确保再次重复设置

调试信息,

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

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

netstat -aon | findstr 8081

如果显示了什么,就意味着端口被阻塞了。如果可能的话,解除那个端口的封锁。

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

react-native run-android --port=9001

确保9001也没有被使用:)

试试下面的方法。

  1. 删除Android和IOS文件夹
  2. 运行react-native eject
  3. 运行react-native Run -android

也许在前面的步骤之后,你执行了npm start -——reset-cache

我有工作,希望能帮到你。

我的解决方案如下:

启动Metro服务器

$ react-native start

开始安卓

$ react-native run-android

如果看到错误提示“端口8081已被使用”,那么您可以终止该进程并重新运行

$ react-native start

参见React本机故障排除页面

默认情况下,一个名为“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中杀死当前使用本地主机端口的进程?< / >

,最重要的是,我从8升级了我的节点版本。X到10.x(最新),正如facebook建议的那样 @ https://facebook.github.io/react-native/docs/getting-started < / p >

我只是想补充一个这里没有提到的不明显的可能性。我使用@react-native-community / netinfo来检测网络变化,主要是网络状态。为了测试网络关闭状态,需要关闭模拟器上的WIFI开关。这也有效地切断了模拟器和调试环境之间的桥梁。测试结束后,我没有重新开启WIFI,因为我离开了电脑,回来后很快就忘了这事。

其他人也有可能是这种情况,在采取任何其他激烈步骤之前,值得检查一下。

下面这些步骤真的对我很有帮助:

步骤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。

享受:)

如果你所有的配置都是正确的,那么试试这个:

adb reverse tcp:8081 tcp:8081

为什么?

当RN打包程序正在运行时,在您的浏览器中有一个活动的web服务器,地址为127.0.0.1:8081。应用程序的JS包就是从这个服务器提供的,并在您进行更改时进行刷新。如果没有反向代理,您的手机将无法连接到该地址。

所有credit to Swingline0 < / > . < / p >

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

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

如果你检查升级差异,你需要创建一个调试清单 android/app/src/debug/AndroidManifest.xml < / p >

<?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

< a href = " https://react-native-community.github。io / upgrade-helper noreferrer“rel = > https://react-native-community.github.io/upgrade-helper/ < / >

我遇到了同样的麻烦,对我来说问题是亚洲开发银行不在正确的环境路径,错误是告诉你地铁端口,当你在adb,端口被杀死并重新启动。

添加环境变量(ADB)

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

请注意:或取决于adb.exe在你的机器中的位置

  1. 保存更改

再次运行android build

$ react-native run-android
< p >或

$ react-native start

$ react-native run-android

你可以尝试以下方法:

在AndroidManifest.xml中添加这一行

<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>
< p >编辑: 小心,它必须false生产上的安全应用

在数小时寻找答案之后。解决方案是将节点降级到版本12.4。

在我的例子中,我意识到这个错误只发生在节点版本12.6的react native 0.60版本中。

我经历过这种情况,只是因为我的模拟器错误地关闭了Wifi。我把它重新打开,它开始正常工作。希望对大家有所帮助

对我来说,这个问题始于升级react-native。为了添加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
...
}
...
}
当我试图将构建(.apk)上传到goole play控制台时,我不得不将targetSdkVersion从27更改为28。 我没有意识到这是导致我上述错误的根本原因。@tom和@tinmarfrutos的立即回答是完全有道理的。< / p >

我通过添加android:usesCleartextTraffic="true"到我的android/app/src/debug/AndroidManifest.xml解决了这个问题

如果你在Linux操作系统上运行,可能会出现npm远程服务器不运行的情况。打开另一个终端(带有项目目录),在执行Sudo react-native run-android之前运行Sudo NPM启动Sudo反应-本机启动命令

在我的例子中,我在模拟器中设置了代理。 在我删除代理后,它恢复正常

模拟器上的错误信息有点误导人。我用的是Macbook。我需要通过运行$ chmod 755 ./gradlew来更改android/gradlew上的权限,然后应用程序可以构建并部署到android模拟器。

如果你在linux上,从App根目录打开终端并运行

npm start

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

react-native run-android

在某些情况下你可能想关闭React-native捆绑器的端口 和重新运行应用程序与相同的进程

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


2.npm start inside the project


3. react-native run-android

对我有用的是:

  1. 关闭所有控制台
  2. 打开一个新的控制台
  3. $ adb devices
  4. 确保你只连接了一个设备
  5. $ react-native run-android

这种错误的可能性也是错误的路径,检查一次

 export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

对我有效的解决方案如下:

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

My code example

只添加三个飞溅: node_modules \ metro-config \ src \ \违约blacklist.js < / p >

更换此部件:

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

我也遇到过这个问题。我解决了下面这一步。

检查名副其实的环境。中的android sdk路径

< p >添加 在系统变量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 / / blacklist.js违约

然后执行npx react-native run-android——port 9001

编码. .快乐!

(快速回答)

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

此错误是因为Metro使用NPM和Node版本的某些组合时出现了问题。

你有两个选择:

  • 选择1:尝试更新或降级npm和节点版本。
  • 进入这个文件:\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 installyarn install,你需要再次更改代码。

    李< /引用> < / >

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

如果您正确地执行正常运行命令,那么您需要这样做来消除这个问题

  1. npm安装
  2. react-native开始
  3. react-native运行android

然后像这样修改你的android manifest文件。

<application
android:name=".MainApplication"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true" // add this line with TRUE Value.
android:theme="@style/AppTheme">

首先执行步骤4和5,然后可以运行项目。如果您没有得到结果(步骤4和5),请执行以下步骤

尝试降级你的Node版本(当前版本是12.13.1)

  choco uninstall nodejs
choco install nodejs --version 12.8

2 -将npm模块(C:\Users\your user name\AppData\Roaming\npm)的路径添加到系统变量中,而不是用户变量

3 -使用命令全局安装react native

  npm install -g react-native-cli

4 -进入项目目录的根目录,执行以下命令:

  react-native start

5 -打开项目根目录下的另一个终端,运行以下命令:

   react-native run-android

编辑:

你在用Genymotion ?是,执行以下步骤。

在以上步骤后,如果您得到以下错误?

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

打开你的genymotion,转到:

然后选择使用自定义android SDK工具(点击浏览找到sdk位置)

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

这对我很有效后尝试了几种方法。

在文件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__\/.*/
];

希望这能有所帮助。

在地铁黑名单中更新此部分

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

你也可以把node js降级到小于12的版本,然后删除nodemodule,然后再次运行NPM install

< p >我做: react-native开始 而且 NPX react-native run-android.

然而,对于Min19,(基于Ubuntu的)我也有同样的问题,直到我运行:

echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
< p >: https://reactnative.dev/docs/troubleshooting#content < / p >

至少我手机里还有软件在运行。

如果你已经尝试了上述解决方案中的所有方法,可以尝试以下步骤:

  1. 在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

  1. 现在运行命令构建react-native run-android

我得到了同样的问题,在遵循以下步骤后,它得到了解决的问题

  1. 清晰的守望者手表:watchman watch-del-all
  2. 删除node_modules文件夹:rm -rf node_modules && npm install
  3. Reset Metro Bundler cache: rm -rf /tmp/metro-bundler-cache-*
  4. 删除急速缓存:rm -rf /tmp/haste-map-react-native-packager-*

我确信它是这里提到的其他东西的某种组合,比如允许明文,这是我为localhost启用的。但这是谜题的最后一块。

project.ext.react = [
entryFile: "index.js",


// ADD THESE THREE


bundleAssetName: "index.android.bundle",
bundleInDebug: true,
bundleInRelease: true
]

RN: 0.61.3

我在遵循React Native 教程(在Linux上开发,目标是Android)时遇到了同样的问题。

这个问题帮助我解决了以下步骤中的问题。按如下顺序执行以下命令:

  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

你可以将上述步骤自动执行,方法是将它们放置在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

显然,没有一个答案能帮我解决这个问题。我能够在模拟器上运行反应本机应用程序,但相同的代码(即使服务器正在运行),在设备上运行应用程序时给了我这个错误。

我能够通过在终端中执行以下命令来解决它:

adb reverse tcp:8081 tcp:8081

我也有同样的问题。但是这个方法解决了这个问题。 进入android文件夹使用 cd android,然后gradlew clean./gradlew clean,适用于你的操作系统
我也遇到过类似的问题。npx react-native init创建.gitignore文件,忽略<project>/android/app/src/debug文件夹。如果您稍后克隆了此项目,则该文件夹将会丢失。 解决办法很简单。以后将这一行添加到.gitignore文件的底部

!android/app/src/debug

对于当前项目,请项目创建者提交此文件夹。 我在react原生版本0.63

时遇到了这个错误

像我们大多数人一样,我假设你运行的是VSCODE。对我来说,我跑了

NPX react-native start

从一个单独的终端

现在在VSCODE中从你的终端运行npx react-native run-android

以下是我在不改变构建的情况下解决这个问题的方法:

1-关闭虚拟设备

2-在物理设备上测试-(它工作)

3-创建新的虚拟设备API 30 Android 10+

4-在新创建的虚拟设备上再次尝试,所有工作都像一个魅力。

嘿,伙计们,两个按钮的组合解决了我的问题。这与港口有关。

adb reverse tcp:8088 tcp:8088
react-native run-android --port=8088
通过这样做,应用程序加载了通过USB连接的手机。 我认为我的AV或Vagrant或PC中的其他东西正在使用该端口

如果需要,您可以将8088更改为其他内容。

享受吧!

  1. 在我的例子中,我只是关闭应用程序窗体模拟器

  2. 然后重新运行

react-native运行android

这是由于android设备无法连接到地铁服务器。如果上面的不起作用,检查一下你的android设备是否配置了代理。(设置比;代理在没有代理)。

在我的例子中,模拟器的Wifi和移动数据是关闭的。

这个错误出现在我和为我解决这个问题的是:

  1. Android Studio中的AVD管理器
  2. 在虚拟设备的操作下按下箭头
  3. 擦除数据
  4. 重新启动地铁

执行如下两条命令

  1. adb kill-server
  2. adb start-server

在此之后,运行命令npm start,然后在Android studio中按下通常的绿色运行按钮。

我尝试了下面所有的解决方案,不同的人评论和回答。有时它工作,但有时没有一个解决方案为我工作.....此错误的最佳解决方案从物理设备卸载APK并再次运行应用程序…它100%适合我!!

步骤1 -

从物理设备上卸载APK

步骤2 -

进入Android文件夹cd android

步骤3 -

输入命令Gradlew Clean

步骤4 -

输入Cd..返回项目

步骤4 -

执行命令npx react-native run-androidreact-native run-android

可能您的端口被占用。 尝试在不同的端口上运行:

adb reverse tcp:6666 tcp:6666
react-native run-android --port 6666

检查您正在使用的端口是否空闲

linux:

lsof | grep LISTEN

窗口:

netstat -an

请检查地铁服务器是否正在运行任何其他端口。如果有,停止所有服务器,然后重新启动服务器,再试一次。

关闭代理,如果你在android studio设置代理,默认使用代理

关闭代理

    this works for me on ubuntu
    

1. if you are having node version 17 first downgrade its version:-
You can use n for node's version management.
    

this is very easy to use.
$ npm install -g n
    

then you can show your node version:
$ node -v
v16.13.2
    

2. create an assets folder inside root of the project:-
project\android\app\src\main\assets
set folder name should be assets


3. now the final step implement the given code inside the project folder:-


$cd project
/project$ 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


4. after following all these step react-native was successfully running on my pc

在我的例子中,我试图在模拟器上运行应用程序。但是,我得到了这个

enter image description here

问题是这个IP不在Android网络安全设置的白名单中。所以,无论你在这里看到的IP地址添加到下面的设置,你就可以开始了。

./android/app/src/main/AndroidManifest.xml


<application
android:name=".MainApplication"
+               android:usesCleartextTraffic="true"   <- Add this line
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"


./android/app/src/main/res/xml/network_security_config.xml
</network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.1.1</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
<domain includeSubdomains="true">10.0.3.2</domain>
</domain-config>
</network-security-config>

只需将<domain includeSubdomains="true">10.0.2.2</domain>替换为react-native错误中显示的IP。

这适用于我,另外添加端口号和运行android

npx react-native run-android --port=8082 (maybe port number differs)

M1芯片

验证你的JAVA_HOME路径,在我的例子中,对于M1芯片,我将其定义为.zprofile

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"

然后在终端上运行源~ / .zprofile

在这之后,它对我起作用了。

这也可能是由于禁用清单中的INTERNET权限造成的。我有一个不需要/使用任何互联网的应用程序,我已经删除了它。自从我更新这个应用程序已经有一段时间了,我已经完全忘记了它。花了大约一个小时把每个答案都试了一遍。

在重命名我的android包ID后,我在React Native v0.69中遇到了这个问题。

当将/android/app/src/debug/java/old_package_name重命名为
/android/app/src/debug/java/new_package_name,我意外地将AndroidManifest.xml的调试版本移动到新创建的路径中。

在将它移回/android/app/src/debug/后,yarn android再次工作,而没有执行任何其他解决方案。有趣的是,这个错误导致了这个错误,所以如果它发生在其他人身上,检查确保你的文件在他们应该在的地方。

试试这个

taskkill /F /IM node.exe

然后

npx react-native run-android