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

IT技术 reactjs react-native react-native-android react-native-cli metro-bundler
2021-03-25 01:35:30

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

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

截屏

我究竟做错了什么?

6个回答

您还没有启动打包程序。运行之前npm start或者react-native start在你的项目根目录下react-native run-android

您必须同时运行 2 个节点控制台。一个启动并运行打包器,另一个运行模拟器。
2021-05-25 01:35:30
确保端口 8081 未被阻止。此外,请确保您使用一个终端来启动捆绑器,等待它完成加载依赖图,然后在另一个终端上运行 react-native run-android。
2021-05-26 01:35:30
在 Windows 中它自己运行,但在 linux 上它不会,谢谢!工作完美!
2021-06-01 01:35:30
@Arbaz.in 是的,你需要先等待依赖图加载完成
2021-06-18 01:35:30
对我来说,即使启动了捆绑程序,也会出现此错误。
2021-06-21 01:35:30

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

第一步:在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。

享受 :)

它有效,我可以调试并且热加载也有效,尽管@JmLavoier 说我不知道​​它为什么停止工作,为什么现在又开始工作了
2021-05-24 01:35:30
这个文件在 react native 项目 index.android.j 中的位置是什么
2021-05-29 01:35:30
这暂时只能运行应用程序,但这将如何启用调试和热加载?这不是完成这项工作的完美解决方案。
2021-05-31 01:35:30
它对我来说很好。但我无法理解发生了什么。这个错误开始发生只是因为。
2021-06-01 01:35:30
现在登录不起作用,如何重新启动
2021-06-18 01:35:30

对我来说,这个错误是由 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/

我有包括 android:usesCleartextTraffic="true" 在内的所有设置,但我仍然无法在真实设备上运行应用程序。
2021-05-25 01:35:30
不幸的是,这对我不起作用。我已经有了这个并且仍然遇到同样的错误,即使 Metro Bundler 正在运行。
2021-06-03 01:35:30
在 RN 0.61.3 上为我工作。
2021-06-05 01:35:30
为我工作。为了增加一些透明度,这是专门在RN升级文档中提到了一步:reactnative.dev/docs/... 我可以推荐从RN模板项目仅仅复制调试AndroidManifest,工作一个魅力:github.com/facebook/react-本机/blob/master/模板/android/...
2021-06-09 01:35:30
我发现如果我定义了 networkSecurityConfig,有时我需要额外的覆盖,但似乎总是这些设置导致了我的问题。您可以尝试删除任何安全配置,并android:usesCleartextTraffic="true"在主要内容中指定AndroidManifest.xml是否有效?
2021-06-17 01:35:30

类似的问题发生在我身上。
显然,Mcafee 阻止了 8081 端口。我花了几个小时才弄清楚这一点。

尝试运行:

react-native run-android --port=1234

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

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

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

感谢您的提示,我不得不在我的防火墙中打开端口 8081 并开始工作
2021-05-23 01:35:30
谢谢,保存了我的项目
2021-05-27 01:35:30
对此赞不绝口。如果你有 Mcafee,我会试试这个,它对我有用。
2021-05-28 01:35:30
我试图在浏览器中点击 localhost:8081 但没有运气。很少研究,发现 macafee 阻止了该端口。按照你的方式。开始工作得很好。
2021-06-02 01:35:30
我已经在这里卡了两天了,没想到这是一个阻塞的端口!非常感谢!
2021-06-13 01:35:30

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

adb reverse tcp:8081 tcp:8081

为什么?

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

所有学分都归功于 Swingline0

您能否在答案中添加为什么这应该起作用以及该命令的作用?
2021-06-09 01:35:30
花了一整天试图切换库,这是我的问题
2021-06-16 01:35:30