react-native run-android通过在android模拟器中的消息中保留一条消息来终止。消息如下
无法加载脚本。请确保您正在运行Metro服务器,或者已正确捆绑了软件包“ index.android.bundle”以进行发布。
我完全感到困惑,这是在做错什么。
编辑:添加错误屏幕截图
答案 0 :(得分:14)
执行以下步骤:
1-尝试降级您的Node版本(当前版本为12.13.1
)
choco uninstall nodejs
choco install nodejs --version 12.8
2-将npm模块(C:\Users\your user name\AppData\Roaming\npm
)的路径添加到系统变量而不是用户变量中
3-使用命令全局安装本机响应
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并转到:
genymotion菜单-> 设置-> ADB -> 然后选择使用自定义android sdk工具(单击浏览以查找sdk位置)
最后,再次运行您的项目..
答案 1 :(得分:9)
您可以尝试以下操作:
将此行添加到您的AndroidManifest.xml
<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>
答案 2 :(得分:7)
只需在中添加三个飞溅: node_modules \ metro-config \ src \ defaults \ blacklist.js
替换此部分:
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
答案 3 :(得分:7)
尝试解决我的工作区中的问题后,我找到了解决方案。
此错误是因为Metro在使用NPM和Node版本的某些组合时出现问题。
您有2种选择:
替代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
,则需要再次更改代码。
答案 4 :(得分:5)
几个小时后寻找答案。解决方案是将节点降级到12.4版。
在我的情况下,我意识到该错误仅发生在版本响应本机0.60和节点版本12.6的情况下。
答案 5 :(得分:4)
在使用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
您可以通过将上述步骤放置在scripts
的{{1}}部分中来实现上述步骤的自动化:
package.json
然后,您每次都可以从命令行执行"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"
。
答案 6 :(得分:4)
这对我有用,尝试了几种方法。
在文件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__\/.*/
];
希望这会有所帮助。
答案 7 :(得分:3)
您尚未启动捆绑器。在npm start
react-native start
或react-native run-android
答案 8 :(得分:3)
显然,没有答案可以解决我的问题。我能够在模拟器上运行react-native应用程序,但是相同的代码(即使在服务器运行时)也使我在设备上运行该应用程序时出现此错误。
我可以通过在终端中执行以下命令来解决该问题:
adb reverse tcp:8081 tcp:8081
答案 9 :(得分:3)
就我而言,模拟器的 Wifi 和移动数据已关闭。
答案 10 :(得分:2)
对我来说,此错误是由于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
答案 11 :(得分:2)
我也遇到了这个问题。我解决了以下步骤。
在 Veritable Veritable中检查android sdk路径。
添加
{strong>系统变量
中的val returnList : List[List[Option[Double]]] =
rangeIn.map(r => symbolsIn.map(s => price(s, r)))
和
系统变量
ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk
路径
在下面的代码段中替换sharedBlacklist ,
C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools
在 node_modules / metro-config / src / default / blacklist.js 中
然后运行npx react-native run-android --port 9001
快乐编码..
答案 12 :(得分:2)
如果您正确配置了所有内容,请尝试以下操作:
adb反向tcp:8081 tcp:8081
为什么? “当RN打包程序运行时,您的浏览器中有一个活动的Web服务器,其位置为127.0.0.1:8081。在您进行更改时,正是通过该服务器提供并刷新了应用程序的JS捆绑包。如果没有反向代理,您的电话将无法连接到该地址。”
所有功劳Swingline0 的功劳
答案 13 :(得分:2)
从Android 9.0(API级别28)开始,默认情况下禁用明文支持。
如果您正确执行正常的运行命令,这就是解决此问题的方法
并像这样修改您的android清单文件。
<application
android:name=".MainApplication"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true" // add this line with TRUE Value.
android:theme="@style/AppTheme">
答案 14 :(得分:2)
对我有用的解决方案如下:
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
答案 15 :(得分:2)
在都会黑名单中更新此部分
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
答案 16 :(得分:1)
此错误的可能性也是错误的路径,请检查一次
export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
答案 17 :(得分:1)
尝试如果您尝试了上述解决方案中提到的所有步骤,请执行以下步骤:
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
答案 18 :(得分:1)
如果您使用的是Linux,请从App根目录打开终端并运行
npm开始
然后打开另一个终端窗口并运行 反应性本机回避
答案 19 :(得分:1)
对我来说,这个问题始于升级本机。升级是添加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 / app / src / debug / AndroidManifest.xml中添加android:usesCleartextTraffic =“ true”来解决了这个问题
答案 20 :(得分:1)
我遇到了同样的麻烦,对我来说,问题是 adb 不在正确的环境路径中,错误告诉您是地铁端口,而在adb中,端口是杀死并重新启动。
注意:或者取决于adb.exe在计算机中的位置
再次运行android build
$ react-native run-android
或
$ react-native start
$ react-native run-android
答案 21 :(得分:1)
就我而言,我只是关闭应用程序表单模拟器
然后再运行一次
react-native run-android
答案 22 :(得分:0)
我有同样的问题。但是这种方法解决了。
使用转到android文件夹
先按responseEntityJson = objectMapper.writeValueAsString(responseEntity);
rootNode = objectMapper.readTree(responseEntityJson);
DataValue = rootNode.findValue("Data");
然后按cd android
或gradlew clean
进行操作,以适用于您的操作系统。
答案 23 :(得分:0)
我遇到了类似的问题。 npx react-native init
创建.gitignore文件,该文件忽略<project>/android/app/src/debug
文件夹。如果您以后克隆了该项目,则该文件夹将丢失。
解决方案很简单。以后将此行添加到.gitignore文件的底部。
!android/app/src/debug
对于您当前的项目,请项目创建者提交此文件夹。 我在React Native版本0.63中遇到了这个错误
答案 24 :(得分:0)
像我们大多数人一样,我假设您正在VSCODE上运行。就我而言,我跑了
npx react-native开始
从另一个终端
现在从您的终端在VSCODE中运行npx react-native run-android
答案 25 :(得分:0)
这是我如何解决此问题而又不涉及构建的问题:
1-关闭虚拟设备
2-已在物理设备上测试过-(有效)
3-使用API 30 Android 10+创建了新的虚拟设备
4-在新创建的虚拟设备上重试,所有操作都像超级按钮。
答案 26 :(得分:0)
嘿,两个遮阳篷的组合解决了我的问题。这与港口有关。
adb reverse tcp:8088 tcp:8088
react-native run-android --port=8088
这样做,应用程序可以很好地加载通过USB连接的手机。 我认为我的AV或Vagrant或PC中的其他设备正在使用该端口。
如果需要,您可以将8088更改为其他名称。
享受!
答案 27 :(得分:0)
这是在 android 设备无法访问 Metro 服务器时引起的。如果上述方法不起作用,请检查您的 android 设备是否没有配置代理。 (设置 > 代理 > 无代理)。
答案 28 :(得分:0)
这个错误对我来说无处不在,为我解决的是:
答案 29 :(得分:0)
运行以下两条命令
adb kill-server
adb start-server
之后,运行命令 npm start
,然后运行 Android Studio 中常用的绿色运行按钮。
答案 30 :(得分:0)
我确定它是这里提到的其他内容的某种组合,例如允许为本地主机启用的明文。但这是难题的最后一部分。
project.ext.react = [
entryFile: "index.js",
// ADD THESE THREE
bundleAssetName: "index.android.bundle",
bundleInDebug: true,
bundleInRelease: true
]
RN:0.61.3
答案 31 :(得分:0)
我遇到了同样的问题,按照以下步骤操作后,问题得到解决
watchman watch-del-all
。 rm -rf node_modules && npm install
。 rm -rf /tmp/metro-bundler-cache-*
rm -rf /tmp/haste-map-react-native-packager-*
答案 32 :(得分:0)
我已经尝试了以下所有由不同人评论和回答的解决方案。有时它有效,但有时没有任何解决方案对我有用.....此错误的最佳解决方案从物理设备卸载 APK 并再次运行应用程序...它对我来说 100% 有用!!!
步骤 1-
<块引用>从物理设备卸载 APK
步骤 2-
<块引用>转到 Android 文件夹 cd android
步骤 3-
<块引用>输入命令 Gradlew Clean
步骤 4-
<块引用>输入 Cd..
返回项目
步骤 4-
<块引用>运行命令 npx react-native run-android
或 react-native run-android
答案 33 :(得分:0)
我做到了: 反应性开始 和 npx react-native run-android。
但是,对于Min19(基于Ubuntu),在运行之前我一直遇到相同的问题:
echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
发件人: https://reactnative.dev/docs/troubleshooting#content
至少我的手机上运行了该应用程序。
答案 34 :(得分:0)
您还可以将Node js降级到12以下版本,并删除nodemodule,然后再次运行npm install
答案 35 :(得分:0)
对我有用的是:
$ adb devices
$ react-native run-android
答案 36 :(得分:0)
在某些情况下,您可能想关闭React-native捆绑程序的端口 并以相同的过程重新运行应用程序
1.sudo kill -9 $(sudo lsof -t -i:9001)
2.npm start inside the project
3. react-native run-android
答案 37 :(得分:0)
模拟器上的错误消息有点误导。就我而言,我使用的是Macbook。我需要通过运行$ chmod 755 ./gradlew
来更改android / gradlew的权限,然后才能构建该应用并将其部署到android仿真器。
答案 38 :(得分:0)
就我而言,我已经在模拟器中设置了代理。 删除该代理后,它可以恢复正常。
答案 39 :(得分:0)
如果您在Linux OS上运行,则可能会导致npm远程服务器未运行。打开另一个终端(带有项目目录)并运行 sudo npm start 或 sudo react-native start ,然后再执行 sudo react-native run-android >
答案 40 :(得分:0)
我只是因为在模拟器上错误地关闭了Wifi才经历了这种情况。我重新打开了Wifi并开始正常工作。希望对某人有帮助
答案 41 :(得分:0)
此步骤确实对我有帮助:
步骤1:在android / app / src / main / assets中创建目录
Linux命令:mkdir android/app/src/main/assets
步骤2:将index.android.js
重命名为index.js
:
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
第3步:
建立您的APK:react-native run-android
答案 42 :(得分:0)
我只想添加一种非显而易见的可能性,此处未涉及。我正在使用@react-native-community/netinfo来检测网络变化,主要是网络状态。要测试网络关闭状态,需要关闭(仿真器上的)WIFI开关。这也有效地切断了仿真器和调试环境之间的桥梁。测试后,我没有重新启用WIFI,因为我不在电脑旁,回来后立即忘记了它。
其他人也可能会遇到这种情况,值得在采取任何其他严厉措施之前进行检查。
答案 43 :(得分:0)
默认情况下,名为“ Metro Server”的微型JavaScript服务器在端口8081上运行。
您需要使此端口可用于此服务器启动。因此,
如何释放端口?
http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html
How to kill the process currently using a port on localhost in windows?
,最重要的是,按照facebook的建议,我将节点版本从8.x升级到了10.x(最新)。 @ https://facebook.github.io/react-native/docs/getting-started
答案 44 :(得分:0)
我对此的解决方法如下:
启动Metro服务器
$ react-native start
启动Android
$ react-native run-android
如果看到错误消息“端口8081已在使用中”,则可以终止该进程并重新运行
$ react-native start
答案 45 :(得分:0)
尝试以下操作。
也许在前面的步骤之后,您执行了npm start---reset-cache
我工作,希望对您有帮助。
答案 46 :(得分:0)
重要- 您的环境中可能有许多虚拟设备。确保如果要更改AVD,请再次重复设置。
如果遇到上述错误,则必须首先验证端口8081上正在运行什么
在终端中使用以下命令查找内容的最快方法
netstat -aon | findstr 8081
如果显示出某些内容,则表明端口已被阻止。如果可能的话,请将该端口解锁。
否则,您将需要更改端口。 Naveen Kumar在上面的评论中已经提到了这样做的过程
react-native run-android --port = 9001
确保也不使用9001:)
答案 47 :(得分:0)
我发生了类似的问题 显然,Mcafee封锁了8081端口,花了我几个小时才弄清楚这一点
尝试运行react-native run-android --port = 1234
应用在模拟器上显示错误后,进入开发设置(可通过单击crtl + M进行访问)
将“设备的调试服务器主机和端口”更改为“ localhost:1234”
关闭应用程序,然后从应用程序抽屉中启动
希望这对您也有帮助!