标签: metro-bundler

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

react-native run-android通过在android仿真器中的消息中保留一条消息来终止。消息如下

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

我完全感到困惑,这是在做错什么。


编辑:添加错误屏幕截图

在此处输入图片说明

reactjs react-native react-native-android react-native-cli metro-bundler

82
推荐指数
18
解决办法
5万
查看次数

如何解决“反应本机启动”上的错误

  1. 我刚刚安装了node.js和cli

  2. 并创建了一个“新项目”。

    react-native init new_project
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在“ new_project”目录中,我很疲倦地查看Metro bundler是否运行良好。

    react-native start
    
    Run Code Online (Sandbox Code Playgroud)
  4. 但是该命令给了我以下错误,并且Metro无法启动。有任何解决此错误的线索吗?(我正在使用Windows 10 OS。)

    • 命令: C:\projects\new_proj>react-native start

      错误无效的正则表达式:/(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests。)$/:未终止的字符类。使用--verbose标志运行CLI以获取更多详细信息。SyntaxError:无效的正则表达式:/(..fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/:新RegExp( )在getBlacklistRE(D:\ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native)的黑名单(D:\ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js:34:10) getDefaultConfig上的-community \ cli \ build \ tools \ loadMetroConfig.js:69:59)(D:\ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native-community \ cli \ build \ tools \ loadMetroConfig.js :85:20)在负载(D:

reactjs react-native react-native-android react-native-cli metro-bundler

48
推荐指数
11
解决办法
3万
查看次数

类型错误:cb.apply 不是函数

我正在尝试运行一个使用 Metro Bundler 的现有 React Native 项目。我的操作系统是 Ubuntu 20.04,我尝试在物理 Android 设备和我使用 Android Studio 创建的 Android 模拟器上运行该应用程序。

我已经成功克隆了项目的 repo,安装了它的依赖项 ( yarn),构建了应用程序 ( react-native run-android),并在我的手机和模拟器上打开了应用程序。但是,运行react-native start错误说TypeError: cb.apply is not a function. 这是我在运行时得到的完整信息和错误react-native start

$ react-native start
warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
warn The following packages use deprecated "rnpm" config that …
Run Code Online (Sandbox Code Playgroud)

android react-native metro-bundler

35
推荐指数
5
解决办法
4万
查看次数

Metro bundler:错误:EISDIR:对目录的非法操作,读取

当我重新加载我的包时,这个异常未被捕获:

Error: EISDIR: illegal operation on a directory, read
    at Object.readSync (fs.js:592:3)
    at tryReadSync (fs.js:366:20)
    at Object.readFileSync (fs.js:403:19)
    at UnableToResolveError.buildCodeFrameMessage (/home/brady/obs-websocket-app/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:347:17)
    at new UnableToResolveError (/home/brady/obs-websocket-app/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:333:35)
    at ModuleResolver.resolveDependency (/home/brady/obs-websocket-app/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:211:15)
    at DependencyGraph.resolveDependency (/home/brady/obs-websocket-app/node_modules/metro/src/node-haste/DependencyGraph.js:413:43)
    at /home/brady/obs-websocket-app/node_modules/metro/src/lib/transformHelpers.js:317:42
    at /home/brady/obs-websocket-app/node_modules/metro/src/Server.js:1471:14
    at Generator.next (<anonymous>)
Run Code Online (Sandbox Code Playgroud)

我的 package.json

{
  "main": "src/index.js",
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "web": "expo start --web",
    "start": "react-native start",
    "test": "jest"
  },
  "dependencies": {
    "@types/node": "^14.14.35",
    "events": "^3.3.0",
    "expo": "~40.0.0",
    "expo-splash-screen": "~0.8.0",
    "expo-updates": "~0.4.0",
    "obs-websocket-js": "^4.0.2",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": …
Run Code Online (Sandbox Code Playgroud)

react-native metro-bundler

19
推荐指数
3
解决办法
1万
查看次数

babel 在 React Native 中做了什么?

我正在尝试弄清楚 React Native 的构建过程以及 Metro 捆绑器和 babeljs 到底做了什么。特别是允许我使用 ES5+ 语法。我发现一些消息来源似乎告诉我一些不同的事情。消息来源说:

\n\n
\n

Metro 将所有 javascript 代码合并到一个文件中,并翻译\n 设备无法理解的任何 Javascript 代码(例如 JSX 或一些\n 较新的 javascript 语法)

\n
\n\n

这个说:

\n\n
\n

React Native 使用 Babel 将 React 语法和较新的 ES5+\n 语法转换为可以在不支持这些功能的 JavaScript 环境中运行的代码。

\n
\n\n

所以现在我很困惑两者到底做了什么。我还在上面的源代码(和 Metro 文档)中找到了这一点:\n Metro。变换过程描述为:

\n\n
\n

所有模块都经过变压器。转换器负责将模块转换为目标平台可以理解的格式(例如 React Native)。模块的转换根据您拥有的核心数量并行进行。

\n
\n\n

这听起来和 babel 应该对我做的转译一模一样,或者这是不同的东西?除此之外,我对捆绑过程的解决部分的工作原理以及它与其他步骤并行工作的确切方式感到困惑,但这也许是另一个问题的主题。

\n

javascript babeljs react-native metro-bundler

18
推荐指数
1
解决办法
7945
查看次数

是否已经可以在 react-native 中使用顶级 await?

是否已经可以在 react-native 中使用顶级 await?我看到它已被添加到 TypeScript 3.8(我没有使用 TS,我只是想看看它是否有帮助,但没有)。然而,在 react-native 文件转换是由 babel 处理的,我认为当前的 Metro 预设不能处理顶级等待。有没有办法让它工作?

async-await typescript babeljs react-native metro-bundler

15
推荐指数
1
解决办法
655
查看次数

React 本机调试器:“错误:ENOENT:没有这样的文件或目录”

问题:当我运行远程调试器时,metro 服务器表示找不到该文件。

Error: ENOENT: no such file or directory, open '/home/hery/Workspace/NyTiona/http:/localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.nytiona&modulesOnly=false&runModule=true'
    at Object.openSync (fs.js:498:3)
    at Object.readFileSync (fs.js:394:35)
    at getCodeFrame (/home/hery/Workspace/NyTiona/node_modules/metro/src/Server.js:919:18)
    at Server._symbolicate (/home/hery/Workspace/NyTiona/node_modules/metro/src/Server.js:992:22)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Server._processRequest (/home/hery/Workspace/NyTiona/node_modules/metro/src/Server.js:403:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/hery/Workspace/NyTiona/http:/localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.nytiona&modulesOnly=false&runModule=true'
}
Run Code Online (Sandbox Code Playgroud)

注意: 无论我使用 USB 还是 Wi-Fi,都会出现此错误。

信息: 我的反应本机信息

    System:
    OS: Linux 5.4 Ubuntu 20.04.3 LTS (Focal Fossa)
    CPU: (4) x64 Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
    Memory: 1.51 GB / 7.49 GB
    Shell: 5.0.17 - /bin/bash
  Binaries:
    Node: 14.17.2 - …
Run Code Online (Sandbox Code Playgroud)

typescript react-native metro-bundler

15
推荐指数
1
解决办法
1万
查看次数

“launchPackager.command”无法打开

刚刚将我的 Mac 更新到 Ventura 官方版本,但我无法通过react-native run-ios.

\n

预期行为:

\n

运行react-native run-ios将启动 Xcode 模拟器和运行 Metro 的终端窗口。

\n

当前行为:

\n

Xcode 模拟器打开,主终端显示应用程序已成功构建,但抛出错误而不是 Metro 终端打开:

\n
\n

\xe2\x80\x9claunchPackager.command\xe2\x80\x9d 无法打开\xe2\x80\x99,因为 (null) 不允许在终端中打开文档。

\n
\n

模拟器只显示白屏,无法交互。

\n

我尝试过的:

\n
    \n
  • 手动打开node_modules/react-native/scripts/launchPackager.command\n
      \n
    • 打开地铁站但未连接到应用程序
    • \n
    \n
  • \n
\n
\n

警告 没有连接应用程序。向所有 React Native 应用程序发送“重新加载”失败。确保您的应用程序正在模拟器中或通过 USB 连接的手机上运行。\ninfo 正在重新加载应用程序...

\n
\n
    \n
  • 给予终端完整磁盘访问权限(无变化)
  • \n
\n

macos react-native metro-bundler macos-ventura

14
推荐指数
2
解决办法
2万
查看次数

未连接任何应用程序。向所有 React Native 应用程序发送“重新加载”失败。确保您的应用程序在模拟器或通过 USB 连接的手机上运行

React Native app 在真机上调试有一些问题;

我的 Metro bundler 控制台发出警告:

warn No apps connected. Sending "reload" to all React Native apps failed. Make sure your app is running in the simulator or on a phone connected via USB.
Run Code Online (Sandbox Code Playgroud)

警告并导致真正的 IOS 设备连接问题。

当我尝试从 Chrome React Native Debugger 重新加载我的 React Native 应用程序时,它给出了上述警告,我无法在 Chrome 上调试我的代码

反应原生:0.62.2,

IOS:13.6

它发生在真实设备连接上。当我使用 IOS 模拟器时,没有问题。

注意:我的手机和 macbook 使用相同的 Wi-Fi 网络。

所以问题与不同的 wi-fi 网络使用无关。

debugging react-native metro-bundler

13
推荐指数
7
解决办法
2万
查看次数

网络安全配置导致 React Native 应用程序无法连接到 Metro 服务器

我有一个非常奇怪的问题,我无法解决。我也不知道如何谷歌这个,因为虽然我熟悉 React Native,但我不熟悉 Android 本身,也不知道我的搜索词应该是什么。

network_security_config.xml因此,在我的 React Native 代码中,我的客户端在路径下添加了以下文件android/app/src/main/res/xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">_my_clients_ip</domain>
    </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

因此,他们在路径AndroidManifest.xml文件中添加了以下内容android/app/src/main

.
.
<application
.
.
        android:networkSecurityConfig="@xml/network_security_config"
</application>
.
.
Run Code Online (Sandbox Code Playgroud)

上面的点表示其他属性和标签,为简洁起见,我省略了这些属性和标签。

我的问题

我正在使用 Android 模拟器来测试我的 React Native 应用程序。
在上面的 xml 不存在之前,我的 React Native 应用程序运行良好。但是,通过上述添加,当我使用命令启动我的 React Native 应用程序时(在 2 个不同的终端中):

$ npx react-native start --reset-cache
$ npx react-native run-android
Run Code Online (Sandbox Code Playgroud)

该应用程序在模拟器中加载 - 但它似乎与metro捆绑器断开连接(终端运行npx react-native start --reset-cache)。

我尝试r在此终端中按 键来检查重新加载是否有效,并输出:

warn No apps connected. …
Run Code Online (Sandbox Code Playgroud)

android react-native metro-bundler

13
推荐指数
1
解决办法
7031
查看次数