无法从“node_modules/@testing-library/react/dist/pure.js”中找到模块“react-dom/client”

问题描述 投票:0回答:5

运行时

npm test
我收到以下错误:

Cannot find module 'react-dom/client' from 'node_modules/@testing-library/react/dist/pure.js'
Required stack:
node_modules/@testing-library/react/dist/pure.js
node_modules/@testing-library/react/dist/index.js

所有必需的软件包似乎都已安装。我重新安装了

react-dom
,但没有帮助。下面提供了我的测试文件中使用的导入:

import React from "react";
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import '@testing-library/jest-dom';

另外提供我的

package.json

{
  "name": "fe",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@fontsource/roboto": "^4.5.3",
    "@material-ui/core": "^4.12.3",
    "@material-ui/icons": "^4.11.2",
    "@mui/icons-material": "^5.5.0",
    "@mui/material": "5.5.3",
    "@mui/styles": "^5.5.1",
    "@reduxjs/toolkit": "^1.8.0",
    "@testing-library/jest-dom": "5.16.3",
    "@testing-library/react": "13.0.0",
    "@testing-library/user-event": "14.0.4",
    "axios": "^0.26.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-hook-form": "^7.28.1",
    "react-redux": "^7.2.6",
    "react-router-dom": "^6.2.2",
    "react-scripts": "5.0.0",
    "redux": "^4.1.2",
    "styled-components": "^5.3.5",
    "web-vitals": "^2.1.4",
    "yup": "^0.32.11"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@types/jest": "^27.4.0",
    "@types/node": "^16.11.25",
    "@types/react": "^17.0.39",
    "@types/react-dom": "^17.0.11",
    "@types/styled-components": "^5.1.24",
    "@typescript-eslint/eslint-plugin": "^5.12.0",
    "@typescript-eslint/parser": "^5.12.0",
    "eslint": "^8.9.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-prettier": "^8.4.0",
    "eslint-import-resolver-typescript": "^2.5.0",
    "eslint-plugin-import": "^2.25.4",
    "eslint-plugin-jsx-a11y": "^6.5.1",
    "eslint-plugin-prettier": "^4.0.0",
    "eslint-plugin-react": "^7.28.0",
    "eslint-plugin-react-hooks": "^4.3.0",
    "prettier": "2.5.1",
    "typescript": "^4.5.5"
  }
}

reactjs typescript unit-testing
5个回答
203
投票

我认为这是因为你的@testing-library/react使用了较新的版本,只需使用12.1.2版本进行测试


69
投票

根据 @testing-library/react 发行说明

version 13
(及以上)已放弃对 React 17
 及以下内容的支持。因此,将此库与 
React <= 17
 一起使用将导致此错误(或其他错误)。

您可以降级到 13 以下的任何版本

@testing-library/react

 来修复它。
在撰写本文时,最新的是 
12.1.5
,它可以与 
React 17
 配合使用。

另一个选择是将 React 升级到 18 及更高版本。


9
投票
我还收到错误“无法找到模块'react-dom/client'”,而没有提及@testing-library/react。

看起来连接react-redux Provider的语法已经改变了:

https://react-redux.js.org/introduction/getting-started (在代码块中提到“// As of React 18”)。

为了使其正常工作,我必须确保 React 和 React-dom 使用的是 18 或更高版本,并更新了所有其他客户端 npm 包。许多需要更新:

npm update package-name --legacy-peer-deps
我花了几个小时才弄清楚这一点。希望它对某人有帮助!


1
投票
当我使用 typescript + vite 开发一个新的 React 项目时,我遇到了同样的错误,但我发现我的一些依赖项已经过时了,然后我按照以下步骤解决了这个问题。

    列出项目
  1. 我删除了我的node_module
  2. 我运行 npm install
  3. 然后我就跑了
  4. npm update --force
    
    
  5. 然后我通过在终端中运行
  6. npm install --save-dev @types/react-dom@latest @types/react@latest
     来安装最新的 types/react-dom 和 types/react 

0
投票
降级 npm i -D @testing-library/

[电子邮件受保护]对我有用,谢谢

© www.soinside.com 2019 - 2024. All rights reserved.