React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault

2024-01-17

我已经在 monorepo 中设置了一个反应本机应用程序作为工作区。我这样做是因为我想分享我在移动应用程序和网络应用程序之间创建的一些反应组件。

我的仓库的基本结构是:

root/
    package.json (with nohoist: ["**/expoapp/**"])
    modules/
        ...shared modules, some simple JS, some react
    apps/
        web/  (cra-based web app)
        mobile/
            package.json
            metro.config.js (addes watchFolders and extraNodeModules)
            App.js

我可以将简单的 JS 模块从模块目录导入到我的移动应用程序中。

但是当我尝试导入我的反应组件之一时,我收到此错误:

Unable to resolve module @babel/runtime/helpers/interopRequireDefault from /Users/jim/development/.../modules/dumb-module/index.js: @babel/runtime/helpers/interopRequireDefault could not be found within the project.

控制台中的错误消息指向我的反应组件的第一行:

iOS Bundling failed 3378ms
Unable to resolve module @babel/runtime/helpers/interopRequireDefault from /Users/jim/development/.../modules/dumb-module/index.js: @babel/runtime/helpers/interopRequireDefault could not be found within the project.

If you are sure the module exists, try these steps:
 1. Clear watchman watches: watchman watch-del-all
 2. Delete node_modules and run yarn install
 3. Reset Metro's cache: yarn start --reset-cache
 4. Remove the cache: rm -rf /tmp/metro-*
> 1 | import React from 'react';
  2 |
  3 | const DumbModule = () => {
  4 |     return (

DumbModule是一个故意简单的反应组件:

import React from 'react';

const DumbModule = () => {
    return (
        <div>I am useless.</div>
    );
};

export default DumbModule;

我将它添加到 App.js 中,如下所示:

import DumbModule from '@mymodules/dumb-module';

我的反应本机应用程序中的依赖项是:

  "devDependencies": {
    "@babel/runtime": "^7.15.4",
    "@react-navigation/native": "^6.0.2",
    "@react-navigation/native-stack": "^6.2.0",
    "react": "17.0.2",
    "react-native": "0.65.1",
    "react-native-safe-area-context": "^3.3.2",
    "react-native-screens": "^3.7.2",
    "@babel/core": "^7.12.9",
    "@react-native-community/eslint-config": "^2.0.0",
    "babel-jest": "^26.6.3",
    "eslint": "7.14.0",
    "jest": "^26.6.3",
    "metro-react-native-babel-preset": "^0.66.0",
    "react-native-codegen": "^0.0.7",
    "react-test-renderer": "17.0.2"
  },

如果我禁用 App.js 中的导入,则该应用程序运行正常。如果启用它,我会收到指向组件第一行的上述消息。

我已经浏览了我能找到的所有建议。没有运气。

有任何想法吗?


我们可以通过添加项目的路径来解决这个问题node_modules目录到nodeModulesPaths数组中metro.config.js。看起来,当 Metro 解决外部模块(哑模块)的依赖关系时,它不会自动知道查看项目自己的模块node_modules,所以它找不到反应。

当然,如果错误消息没有引用不相关的 babel 文件,那就会很有帮助。

这是我的更新metro.config.js:

const path = require('path');

const extraNodeModules = {
    'modules': path.resolve(path.join(__dirname, '../../modules'))
};

const watchFolders = [
    path.resolve(path.join(__dirname, '../../modules'))
];

const nodeModulesPaths = [path.resolve(path.join(__dirname, './node_modules'))];

module.exports = {
    transformer: {
        getTransformOptions: async () => ({
            transform: {
                experimentalImportSupport: true,
                inlineRequires: true,
            },
        }),
    },
    resolver: {
        extraNodeModules,
        nodeModulesPaths
    },
    watchFolders
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault 的相关文章

随机推荐

  • 使用Java读取名称中带有空格的文件?

    文件的原始名称是1 00100 0042 jpg 我有个问题 java net URISyntaxException Illegal character in path at index 49 file opt storage user d
  • F# - 了解使用泛型的类型

    我将在 10 天后参加 F 考试 由于我目前正在做旧的考试集 因此我在理解泛型尤其是具有两个多态参数的类型时遇到了问题 这些问题应该很容易解决 但它在语法上是如何运作的 我不确定 旧考试题如下 以下类型Sum lt a b gt 包含两种不
  • 如何评估 JSF 复合组件中的 MethodExpressions

    我不确定处理复合组件中的方法表达式的 正确 方法 我的组合使用带有操作方法的支持类 这些执行一些默认操作或委托给复合用户作为属性传递的操作方法 使用页面中
  • Flutter mlkit 阿拉伯语文本检测器

    嗨 我正在使用 fluttermlkit https pub dev packages mlkit with firebase https firebase google com docs ml kit 从图像中提取文本 如果语言是英语 一
  • 当我单击下载链接时,如何强制 chrome 显示“另存为”对话框? [复制]

    这个问题在这里已经有答案了 我在 chrome 中使用 WebKitBlobBuilder 在用户端生成文本文件 现在 我需要显示一个另存为对话框 让用户决定放置新生成的文件的文件夹 在 Chrome 中 另存为对话框 无需浏览器配置 如何
  • 如何在小块中禁用 Haskell 警告?

    我想仅禁用某些代码块的警告 我搜索了 Google 但只找到文件范围或全局范围禁用方法 使用 cabal 文件或 pragma OPTIONS GHC 我可以禁用特定功能的警告吗 不可以 目前在 GHC 9 2 1 中还不能 The OPT
  • 如何指定div的高度?

    我想为前两个 div 指定固定高度 并为接下来的两个 div 指定百分比值 最后一个 div 应该占据前一个 div 留下的所有空间 到浏览器窗口的底部 我如何在CSS中实现这个 这是我的 css html
  • 内联块元素和垂直对齐推理

    我使用 display inline block 有 2 个彼此相邻的 div 框 如果没有内容 两个内联块 div 都会与顶部垂直对齐 如果两者都有内容 它们也会垂直对齐到顶部 如果其中只有一个具有文本内容 则具有文本内容的 div 框将
  • SQLite - 存储多个值

    如何在 SQLite 数据库中存储和检索同一列的同一行的多个值 即我有一个产品列 另一列是商店 我在其中放入所有可以获得该产品的商店 Product iLamp Stores River s McWay Lonnie s 我怎样才能实现这个
  • Xcode 4.1 代码签名问题

    我已经阅读了很多线程 但在这里找不到类似我的问题的内容 我认为这是一个简单的修复 但我似乎找不到答案 我正在使用 Xcode 4 1 Gold Master 基本上 当我归档我的 Mac 应用程序时 它会经历所有正常流程 构建成功 但是 当
  • 有没有办法像 C# 中的 @"string" 一样转义 powershell 中的字符串

    有没有办法在 powershell 中转义完整的字符串 就像 string 在 C 中的工作方式一样 我正在编写一个脚本 其中有几个如下所示的字符串 D A CCLCSWRPWPDTLOCRRC SY A CCDCLCSWRPWPDTLOC
  • Laravel / Eloquent hasMany 关系 sum()

    我不知道如何立即加载关系列的总和 数据库 简化 如下 TABLES PRODUCT PRODUCT VARIATIONS ID ID NAME NAME AVAILABLE STOCK 我的关系设置如下 public function va
  • 如何在扩展到匹配文件之前访问文字通配符参数?

    背景 我正在编写一个必须接收这些参数的 bash 脚本 文件名 包含一组规则的文件 文件名列表 要处理的文件 可以使用通配符 目标文件夹 将存储文件的处理版本 理论上有 3 个参数 但实际上第二个参数会扩展 因此如果通配符匹配多个文件 参数
  • 关于round_up宏的问题

    define ROUND UP N S N S 1 S S 通过上面的宏 有人可以帮助我理解 s 1 部分 为什么呢 还有宏 例如 define PAGE ROUND DOWN x ULONG PTR x PAGE SIZE 1 defin
  • setter 和 getter 的模板

    我不熟悉模板 但我想知道是否可以将它们用于 setter 和 getter 方法 例如在这种情况下 double exmlClass getA void const return a void exmlClass setA const do
  • 无法使 NSTimer 无效(停止)[重复]

    这个问题在这里已经有答案了 可能的重复 NSTimer 不会停止 https stackoverflow com questions 1031554 nstimer doesnt stop 我正在使用 NSTimer 在播放音频时更新滑块的
  • 使用 REST API 将角色添加到 Google Cloud Platform 上的服务帐号

    我想使用调用 REST API 的 python 脚本在 GCP 上创建一个服务帐户 然后赋予它特定的角色 最好是一些角色these https cloud google com iam docs viewing grantable rol
  • 如何在 C# 中更改选项卡控件的字体属性而不更改其子控件的字体?

    我想更改选项卡控件的字体 因为我希望选项卡页标题中的文本看起来更大 但是 当我更改设计器中选项卡控件的字体属性 我使用的是 MS VStudio 2010 时 其子控件的字体也会更改 例如标签和树视图 这是我不打算做的 我只想更改选项卡页标
  • 验证失败时 TextBox 周围的红色边框

    我正在使用 ASP NET MVC 2 当验证失败时 Html DropDownListFor 和 Html TextAreaFor 自动获取红色边框 如何在验证失败时使 TextBox 使用 Html TextBoxFor 的四个边框变为
  • React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault

    我已经在 monorepo 中设置了一个反应本机应用程序作为工作区 我这样做是因为我想分享我在移动应用程序和网络应用程序之间创建的一些反应组件 我的仓库的基本结构是 root package json with nohoist expoap