ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点

Posted

技术标签:

【中文标题】ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点【英文标题】:ReactDOM.render: Unable to find node on an unmounted component after React upgrade from 16.4.2 to 16.5.2 【发布时间】:2019-03-15 00:37:51 【问题描述】:

我已将 ReactJS 项目更新到最新版本,npm update 从 Visual Studio 2017 运行,结果如下:

+ @material-ui/icons@2.0.3
+ react-dom@16.5.2
+ @material-ui/core@1.5.1
+ react@16.5.2
+ @aspnet/signalr@1.0.4
added 4 packages from 3 contributors, removed 10 packages, updated 20 packages and audited 185 packages in 23.309s
found 0 vulnerabilities

当我运行 npm outdated 时,我仍然得到:

Package             Current  Wanted  Latest  Location
@material-ui/core     1.5.1   1.5.1   3.2.0  Dixie
@material-ui/icons    2.0.3   2.0.3   3.0.1  Dixie

现在当我运行在更新之前工作的项目时,我得到了

ReactDOM.render:无法在未安装的组件上找到节点。

这是我的 package.json:


  "name": "Dixie",
  "version": "0.1.0",
  "private": true,
  "dependencies": 
    "bootstrap": "^3.3.7",
    "react": "^16.4.1",
    "react-bootstrap": "^0.31.5",
    "react-dom": "^16.4.1",
    "react-router-bootstrap": "^0.24.4",
    "react-router-dom": "^4.2.2",
    "react-scripts": "^1.1.4",
    "rimraf": "^2.6.2"
  ,
  "scripts": 
    "start": "rimraf ./build && react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  

React 更新到 16.5.2 后如何修复这个错误?


我做到了

npm install  @material-ui/icons@3.0.1
npm install  @material-ui/core@3.2.0
npm cache clean --force

现在npm outdated 什么都不显示,但错误仍然存​​在。

也尝试过(没有任何收获):

npm uninstall --save react-dom
npm uninstall --save react
npm install react-dom
npm install react

唯一“有效”的是降级

npm install react-dom@16.4.2
npm install react@16.4.2

但这意味着我无法升级。又试了另一台电脑,同样的项目,同样的错误出来了。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。最后将 React 和 React-dom 升级到 16.6.0 有所帮助。

【讨论】:

确实如此。你能提供一些背景或解释吗?【参考方案2】:

我建议卸载/删除损坏的软件包并安装更新的软件包。

您可以将 React 降级到 16.4.2。这样:

npm uninstall --save react-dom
npm uninstall --save react
npm install react-dom@16.4.2
npm install react@16.4.2

【讨论】:

我没有任何损坏的包裹。 npm-check 告诉我Your modules look amazing. Keep up the great work. 我觉得不错。您是否尝试过完全删除并再次安装? 我为这个错误消息苦苦挣扎了几天,但我从来没有意识到要更新 react-domreact。看到这个问答为我触发了灯泡。谢谢! @robabby 您的意思是您使用版本 16.5.2 修复了错误?我还在 16.4.2 降级... @robabby 嗯,对我来说,将这些更新运行到 16.5.2 仍然会导致上述错误。

以上是关于ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点的主要内容,如果未能解决你的问题,请参考以下文章

ReactDOM.render 与 React 组件渲染区别

ReactDOM.render和ReactDOM.createPortal

React.render和reactDom.render的区别

React 源码分析:调用ReactDOM.render后发生了什么

如何使用 ReactDOM Render 渲染一个 React 组件

ReactDOM.render