react-native run-android
通过在android模拟器中留下一条消息来终止命令。消息如下
“无法加载脚本。请确保您正在运行Metro服务器,或者已正确捆绑了软件包'index.android.bundle'以进行发布。”
我完全困惑我做错了什么。
编辑:添加错误屏幕截图
在某些情况下,您可能想关闭React-native捆绑程序的端口并使用相同的过程重新运行应用程序
1.sudo kill -9 $(sudo lsof -t -i:9001)
2.npm start inside the project
3. react-native run-android
对我有用的是:
$ adb devices
$ react-native run-android
就我而言,我已经在模拟器中设置了代理。删除该代理后,它可以恢复正常。
模拟器上的错误消息有点令人误解。就我而言,我使用的是Macbook。我需要通过运行来更改android / gradlew的权限$ chmod 755 ./gradlew
,然后才能构建该应用并将其部署到android模拟器。
默认情况下,名为“ Metro Server”的微型JavaScript服务器在端口8081上运行。
您需要使此端口可用于此服务器启动。所以,
如何释放端口?
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(最新)。
如果您在Linux OS上运行,则可能会导致npm远程服务器未运行。打开另一个终端(带有项目目录)并在执行sudo react-native run-android之前运行此命令sudo npm start或sudo react-native start
重要信息-您的环境中可能有许多虚拟设备。确保如果要更改AVD,请再次重复设置。
如果遇到上述错误,则必须首先验证端口8081上正在运行什么
查找最快的方法是在终端中使用以下命令
netstat -aon | findstr 8081
如果那向您显示某些信息,则表明该端口已被阻止。如果可能,请将该端口畅通无阻。
否则,您将需要更改端口。Naveen Kumar在上面的评论中已经提到了这样做的过程
react-native run-android --port=9001
确保也不使用9001 :)
如果您使用的是Linux,请从App根目录打开终端并运行
npm start
然后打开另一个终端窗口并运行:
reactive-native run-around
对我来说,这个问题始于升级本机。升级是添加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中解决了该问题
此错误的可能性也是错误的路径,请检查一次
export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
我遇到这种情况是因为我的Wifi错误地在模拟器上关闭了。我重新打开它,并且开始工作正常。希望对某人有帮助
我只想添加一个在这里没有涉及的非显而易见的可能性。我正在使用@ react-native-community / netinfo来检测网络更改,主要是网络状态。要测试网络关闭状态,需要关闭(仿真器上的)WIFI开关。这也有效地切断了仿真器和调试环境之间的桥梁。测试后,我没有重新启用WIFI,因为我不在电脑旁,回来后立即忘记了它。
其他人也可能会遇到这种情况,值得在采取任何其他严厉措施之前进行检查。
请尝试以下方法。
也许在前面的步骤之后,您已经执行了npm start---reset-cache
我工作,希望对您有帮助。
我也遇到了这个问题。我解决了以下步骤。
在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
快乐编码..!
我遇到了同样的麻烦,对我来说,问题是adb不在正确的环境路径中,错误告诉您是地铁端口,而当您处于adb中时,端口将被杀死并重新启动。
注意:或取决于adb.exe在计算机中的位置
再次运行android build
$ react-native run-android
要么
$ react-native start
$ react-native run-android
我对此的解决方案如下:
启动Metro服务器
$ react-native start
启动Android
$ react-native run-android
如果看到错误消息“端口8081已在使用中”,则可以终止该进程并重新运行
$ react-native start
下班后寻找答案。解决方案是将节点降级到版本12.4。
在我的情况下,我意识到该错误仅发生在版本本机0.60和节点版本12.6之间的错误中。
从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">
在尝试了几种方法后,这对我有用。
在文件中 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__\/.*/
];
希望这可以帮助。
如果您正确配置了所有内容,请尝试以下操作:
亚行反向tcp:8081 tcp:8081
为什么?“当RN打包程序运行时,您的浏览器中将有一个活动的Web服务器,其访问位置为127.0.0.1:8081。正是通过此服务器为您的应用程序提供了JS捆绑包,并在您进行更改时对其进行了刷新。如果没有反向代理,您的电话将无法连接到该地址。”
所有学分归功于Swingline0
在尝试解决我的工作空间中的问题后,我找到了解决方案。
此错误是因为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
需要再次更改代码。
我发生了类似的问题显然,Mcafee封锁了8081端口,这花了我几个小时才弄清楚
尝试跑步 react-native run-android --port=1234
当应用程序在模拟器上显示错误时,进入开发设置(可通过单击crtl + M进行访问)
将“调试设备的服务器主机和端口”更改为“ localhost:1234”
关闭应用程序,然后从应用程序抽屉启动它
希望对您有帮助!!
只需在其中添加三个启动器:node_modules \ metro-config \ src \ defaults \ blacklist.js
替换此部分:
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
首先执行步骤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的位置)
最后,再次运行您的项目..
您可以尝试以下方法:
在您的AndroidManifest.xml上添加此行
<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>
对我来说,这个错误是由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>
这些步骤确实对我有帮助:
步骤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。
请享用 :)
您尚未启动捆绑器。在之前运行npm start
或react-native start
在项目的根目录中react-native run-android
。
在Metro黑名单中更新此部分