29

我见过很少有与此类错误相关的帖子。但无法解决我的问题。

我的 package.json:

"react": "~0.14.7",
"webpack": "^1.12.13",
"react-hot-loader": "^3.0.0-beta.6",
.
.

我在 webpack 上收到以下错误:

ERROR in ./public/src/main.js
Module not found: Error: Cannot resolve module 'react-dom' in C:\Users\react-example\public\src 
@ ./public/src/main.js 19:16-36

但是在我做的时候在cmd行

npm -v react-dom

我得到 3.10.10。react-dom 在那里。但我想知道为什么它仍然给出这个错误。

当我通过 npm "npm install react-dom" 安装 react-dom 并运行 webpack 时,出现以下错误:

ERROR in ./~/react-dom/lib/ReactDOMNullInputValuePropHook.js
Module not found: Error: Cannot resolve 'file' or 'directory' C:\Users\react-example/node_modules/react/lib/ReactComponentTreeHook in C:\Users\react-example\node_modules\react-dom\lib
 @ ./~/react-dom/lib/ReactDOMNullInputValuePropHook.js 13:29-72

ERROR in ./~/react-dom/lib/ReactDOMUnknownPropertyHook.js
Module not found: Error: Cannot resolve 'file' or 'directory' C:\Users\react-example/node_modules/react/lib/ReactComponentTreeHook in C:\Users\react-example\node_modules\react-dom\lib
 @ ./~/react-dom/lib/ReactDOMUnknownPropertyHook.js 15:29-72

ERROR in ./~/react-dom/lib/ReactDOMInvalidARIAHook.js
Module not found: Error: Cannot resolve 'file' or 'directory' C:\Users\react-example/node_modules/react/lib/ReactComponentTreeHook in C:\Users\react-example\node_modules\react-dom\lib
 @ ./~/react-dom/lib/ReactDOMInvalidARIAHook.js 14:29-72

ERROR in ./~/react-dom/lib/ReactDebugTool.js
Module not found: Error: Cannot resolve 'file' or 'directory' C:\Users\react-example/node_modules/react/lib/ReactComponentTreeHook in C:\Users\react-example\node_modules\react-dom\lib
 @ ./~/react-dom/lib/ReactDebugTool.js 16:29-72

请帮忙。

4

11 回答 11

50

问题是react-dom未安装,当您点击时npm -v react-dom,它会为您提供npmnot react-domversion 的版本,您可以检查使用npm -vnpm -v react-dom两者都会给您相同的结果。您正在错误地检查软件包版本。

如何正确安装 react 和 react-dom?

使用它来安装 react 和 react-dom:

npm install react react-dom --save

之后,您可以检查您的package.json文件,如果 react 和 react-dom 已正确安装,您将找到一个条目。

如何查看安装包版本?

要检查所有本地安装的软件包版本:

npm list    

对于全局安装的包,也可以使用 -g:

npm list -g

要检查任何特定包的版本,请同时指定包名称:

npm list PackageName

For Example =>
   npm list react
   npm list react-router

安装后你的package.json会是这样的:

{
  "name": "***",
  "version": "1.0.0",
  "main": "***",
  "scripts": {
     ....
  },
  "repository": {
     ....
  },
  "keywords": [],
  "author": "",
  "dependencies": {
    ....
    "react": "^15.4.2",          //react
    "react-dom": "^15.4.2",      //react-dom
     ....
  },
  "devDependencies": {
     ....
  }
}

最新版本react-dom是:15.4.2

参考:https ://www.npmjs.com/package/react-dom

于 2017-03-03T09:09:22.190 回答
21

就我而言,我的 webpack.config.common.js 中有一个别名:

 resolve: {
    extensions: ['.js', '.jsx'],
    alias: {
      'react-dom': '@hot-loader/react-dom',
    },
  },

我刚刚删除了这一行:

'react-dom': '@hot-loader/react-dom',

它是固定的。

于 2019-09-04T15:28:02.863 回答
4

我使用了“npm update”,这解决了我的问题。

于 2018-06-19T03:06:16.423 回答
4

就我而言,这是我在 webpack.conf 中的别名,它正在寻找@hot-loader/react-dom.

于 2019-06-03T17:33:15.103 回答
3

对于任何阅读此内容但无法弄清楚的人。我遇到了同样的问题,我最终通过安装“react-router”软件包解决了这个问题,该软件包只是运行以下命令

npm i react-router-dom --save对于浏览器应用程序。

npm i react-router-native对于本机应用程序。

于 2017-09-16T05:22:11.453 回答
1

您可能需要更新reactreact-dom. 尽管react-dom实际上已安装,但我遇到了这个问题^15.5.4并且它消失了^16.8.6

$ # update the react and react-dom modules
$ yarn add react react-dom

确保两个版本完全匹配package.json

"react": "^16.8.6",
"react-dom": "^16.8.6",

删除yarn.lock, node_modules, 并yarn再次删除。

rm -Rf yarn.lock node_modules && yarn
于 2019-04-12T00:27:21.340 回答
0

对于使用Parcel的用户,如果您的目标Node是基于浏览器的应用程序,则可能会发生这种情况。

Parcel 可以通过 3 种方式从您的 中推断出这一点package.json

在此处输入图像描述

删除节点作为目标,或在命令行中指定--targetas 。browser

另见:

于 2021-04-16T02:07:21.263 回答
0

尝试rm -rf node_modules && yarn或者rm -rf node_modules && npm install如果您使用 npm 而不是纱线。

于 2018-06-22T20:59:37.573 回答
0

以下命令将解决该问题。

npm install react react-dom --save

于 2019-12-02T11:06:26.300 回答
0

我遇到此错误的特殊问题:

./src/index.js 中的错误模块未找到:错误:无法解析 'C:\Users\Jose\Desktop\woz-u-React\React-Course\react-lesson-one 中的 'eact-dom' \src' @ ./src/index.js 2:0-32 @ multi (webpack)-dev-server/client? http://localhost:8080 ./src/index.js

为了解决这个问题,我必须在安装之前解压缩文件夹。

于 2018-11-07T01:44:20.937 回答
-1

您的应用程序指向 react 的全局版本,因此您需要使用 global 关键字手动安装它。您还可以比较当前项目的 package.json 中安装的 react-dom 版本和使用命令全局安装的 react-dom 版本,npm -v react-dom如果两者不同,则使用命令手动安装 react dom:

sudo npm install -g react-dom@17.0.2
于 2021-07-19T12:27:38.617 回答