簡體   English   中英

react + node應用程序中的babel-jest版本沖突

[英]babel-jest version conflict in react + node application

我試圖在我的應用程序的服務器端運行 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

按照錯誤 output 給您的所有步驟操作,不是給出的步驟 3(從依賴項中刪除它),請執行以下操作:

  1. go 到package.json中,在dependencies和/或devDependencies中找到jest ,並將找到的版本號替換為24.9.0
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 build react-scripts build

項目依賴樹可能有問題。 這可能不是 Create React App 中的錯誤,而是您需要在本地修復的錯誤。

Create React App 提供的 react-scripts package 需要依賴:

"babel-jest": "^24.9.0"

不要嘗試手動安裝:您的 package 管理器會自動安裝。 但是,在樹的較高位置檢測到不同版本的 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,具體取決於您使用的 package 管理器。

在大多數情況下,這應該足以解決問題。 如果這沒有幫助,您可以嘗試其他一些方法:

  1. 如果您使用 npm,請安裝 yarn ( http://yarnpkg.com/ ) 並用它重復上述步驟。 這可能會有所幫助,因為 npm 已知 package 提升問題,這些問題可能會在未來的版本中得到解決。

  2. 檢查 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest 是否在您的項目目錄之外。 例如,您可能不小心在主文件夾中安裝了一些東西。

  3. 嘗試在項目文件夾中運行 npm ls babel-jest。 這將告訴您哪些其他 package(除了預期的 react-scripts)安裝了 babel-jest。

如果沒有其他幫助,請將 SKIP_PREFLIGHT_CHECK=true 添加到項目中的 .env 文件中。 如果您仍然想繼續,這將永久禁用此預檢檢查。

對於將來遇到此問題的任何人-在包含由 CRA 創建的嵌套客戶端的服務器文件夾中安裝 Jest 時,我遇到了同樣的問題。 我的解決方案是匹配 CRA 在我的服務器端 package.json 安裝的 Jest 版本。

就我而言,在客戶端我使用的是:“react-scripts”:“4.0.3”

它具有以下依賴關系:“jest”:“26.6.0”

所以在服務器 package.json 我需要相同版本的笑話。 刪除了服務器 node_modules & package-lock 並清理了 npm 安裝。

現在服務器和客戶端都使用相同版本的 jest(和嵌套的 deps)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM