【问题标题】:babel-jest version conflict in react + node applicationreact + node应用程序中的babel-jest版本冲突
【发布时间】:2020-08-20 16:23:21
【问题描述】:

我试图在我的应用程序的服务器端运行 jest 测试,但 babel-jest 版本与 react 的 babel-jest 版本冲突。

当我运行我的应用程序时出现此错误。

当我执行“npm ls babel-jest”时,我明白了

babel-jest@24.9.0 -- jest@26.0.1 -- @jest/core@26.0.1 -- jest-config@26.0.1 -- babel-jest@26.0.1

【问题讨论】:

    标签: node.js reactjs jestjs babeljs babel-jest


    【解决方案1】:
    cmds-ui-operations@0.1.2 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations
    +-- react-scripts@3.4.1
    | +-- babel-jest@24.9.0
    | `-- jest@24.9.0
    |   `-- jest-cli@24.9.0
    |     `-- jest-config@24.9.0
    |       `-- babel-jest@24.9.0 deduped
    `-- ts-jest@26.4.3
      `-- jest@26.6.1
        `-- @jest/core@26.6.1
          `-- jest-config@26.6.1
            `-- babel-jest@26.6.1
    
    [32;1m$ npm run build[0;m
    

    cmds-ui-operations@0.1.2 构建 反应脚本构建

    项目依赖树可能有问题。 这可能不是 Create React App 中的错误,而是您需要在本地修复的问题。

    Create React App 提供的 react-scripts 包需要依赖:

    "babel-jest": "^24.9.0"

    不要尝试手动安装:您的包管理器会自动安装。 但是,在树的较高位置检测到不同版本的 babel-jest:

    /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest(版本:26.6.1)

    已知手动安装不兼容的版本会导致难以调试的问题。

    如果您希望忽略此检查,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。 这将永久禁用此消息,但您可能会遇到其他问题。

    要修复依赖关系树,请尝试按照以下步骤进行操作:

    1. 删除项目文件夹中的 package-lock.json(不是 package.json!)和/或 yarn.lock。
    2. 删除项目文件夹中的 node_modules。
    3. 从项目文件夹中 package.json 文件中的依赖项和/或 devDependencies 中删除“babel-jest”。
    4. 运行 npm install 或 yarn,具体取决于您使用的包管理器。

    在大多数情况下,这应该足以解决问题。 如果这没有帮助,您可以尝试其他一些方法:

    1. 如果您使用 npm,请安装 yarn (http://yarnpkg.com/) 并使用它重复上述步骤。 这可能会有所帮助,因为 npm 已知包提升问题,这些问题可能会在未来的版本中得到解决。

    2. 检查 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest 是否在您的项目目录之外。 例如,您可能不小心在主文件夹中安装了一些东西。

    3. 尝试在您的项目文件夹中运行 npm ls babel-jest。 这会告诉你安装了 babel-jest 的其他包(除了预期的 react-scripts)。

    如果没有其他帮助,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。 如果您仍然想继续,这将永久禁用此预检检查。

    【讨论】:

      【解决方案2】:

      按照错误输出提供给您的所有步骤,但是而不是给出的第 3 步(从依赖项中删除它),请执行以下操作:

      1. 进入package.json,在dependencies和/或devDependencies中找到jest,并将找到的版本号替换为24.9.0

      【讨论】:

        【解决方案3】:

        对于将来遇到此问题的任何人-我在将 Jest 安装到包含由 CRA 创建的嵌套客户端的服务器文件夹中时遇到了同样的问题。我的解决方案是匹配 CRA 在我的服务器端 package.json 中安装的 Jest 版本。

        就我而言,在客户端我使用的是: “反应脚本”:“4.0.3”

        具有以下依赖关系: “笑话”:“26.6.0”

        所以在服务器 package.json 中我需要相同版本的 jest。删除了服务器 node_modules & package-lock 并清理了 npm install。

        现在服务器和客户端都使用相同版本的 jest(和嵌套的 deps)。

        【讨论】:

          猜你喜欢
          • 2019-09-01
          • 1970-01-01
          • 2015-12-07
          • 2022-11-01
          • 2020-05-03
          • 2023-01-30
          • 2011-02-10
          • 2015-05-02
          • 1970-01-01
          相关资源
          最近更新 更多