Website-Suche

reactjs - Modul 'react-dom/client' kann von 'node_modules/@testing-library/react/dist/pure.js' nicht gefunden werden


Beim Ausführen von npm test habe ich folgenden Fehler erhalten:

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

Alle notwendigen Pakete scheinen installiert zu sein. Ich habe react-dom neu installiert, aber es hat nicht geholfen. Unten sind die Importe aufgeführt, die in meiner Testdatei verwendet werden:

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

Zusätzlich stelle ich meine package.json zur Verfügung:

{
  "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"
  }
}

Antwort #1

Ich denke, es liegt daran, dass dein @testing-library/react die neuere Version verwendet, teste einfach mit der Version 12.1.2

Antwort #2

Laut den Versionshinweisen von @testing-library/react hat Version 13 (und höher) die Unterstützung für React 17 und darunter eingestellt. Die Verwendung dieser Bibliothek mit React <= 17 wird daher diesen Fehler (oder möglicherweise andere) verursachen.

Sie können auf jede Version von @testing-library/react unter 13 downgraden, um es zu beheben. Zum Zeitpunkt dieses Schreibens wäre die neueste 12.1.5, die gut mit React 17 funktioniert.

Eine andere Möglichkeit ist, React auf Version 18 oder höher zu aktualisieren.

Antwort #3

Ich bekam auch den Fehler "Modul 'react-dom/client' kann nicht gefunden werden", ohne dass @testing-library/react erwähnt wurde.

Sieht so aus, als hätte sich die Syntax zum Anschließen des react-redux Providers hier geändert: https://react-redux.js.org/introduction/getting-started (im Codeblock, in dem "// Ab React 18" erwähnt wird).

Um dies zum Laufen zu bringen, musste ich sicherstellen, dass ich Version 18 oder höher von React und React-Dom hatte, und auch alle anderen Client-NPM-Pakete aktualisieren. Viele mussten mit folgendem Befehl aktualisiert werden:

npm update package-name --legacy-peer-deps

Hat ein paar Stunden gedauert, bis ich das herausgefunden habe. Hoffe, es hilft jemandem!

Verwandte Artikel