react-hot-loader:react--未检测到dom补丁

时间:2019-02-19 16:10:58

标签: reactjs gatsby react-hot-loader

我在Gatsby项目中更新了一些npm软件包,现在在控制台中看到此警告:

React-hot-loader: react--dom patch is not detected. React 16.6+ features may not work.

但是,当我查看源代码时,会有一个注释:

// Actually everything works...

此警告实际上是什么意思?这是我应该解决的问题还是让它成为现实?

6 个答案:

答案 0 :(得分:5)

您需要根据您的ReactJS版本将@hot-loader/react-dom添加到您的项目中,请注意以下命令:

yarn add @hot-loader/react-dom@[YOUR_REACT_VERSION]

然后需要在Webpack配置文件中为其添加解析别名:

resolve: {
    alias: {
      'react-dom': '@hot-loader/react-dom'
    }
}

有关更多信息,请阅读其docs

答案 1 :(得分:4)

更新2020

从2020年夏季开始,这是Gatsby's GitHub repository上推荐的当前解决方案:

步骤1

运行此命令-但是单独运行将无法解决问题:

Hadoop

步骤2

修改npm install -D @hot-loader/react-dom // or yarn add -D @hot-loader/react-dom 以添加以下内容:

gatsby-node.js

重新启动exports.onCreateWebpackConfig = ({ stage, actions }) => { if (stage.startsWith("develop")) { actions.setWebpackConfig({ resolve: { alias: { "react-dom": "@hot-loader/react-dom", }, }, }) } } 。警告不见了。

答案 2 :(得分:2)

因此,这似乎是开发过程的产物。看起来在这种情况下该做些什么来回了。该错误消息已被注释掉,然后作为问题的修补程序重新添加:https://github.com/gaearon/react-hot-loader/commit/efc3d6b5a58df77f6e0d5ca21bef54e8f8732070

因此,这似乎是一个次要警告,除非您需要特定功能,否则可能就很好。

最好向维护者请他们澄清一下,因为他们似乎有些困惑:)

答案 3 :(得分:2)

简而言之-React-Hot-Loader是“可能不起作用”的东西。它有很多问题和局限性。

“热补丁”的创建是为了(首先)支持React的新功能,(其次)使其更加稳定。

  • 没有此补丁-确实有些可能不起作用。
  • 使用补丁程序-某些情况可能会更好,尤其是在将来。

这是我们(好吧,我的)希望减轻RHL遇到的主要问题,并被视为“版本5”-https://github.com/gaearon/react-hot-loader/milestone/3

hot-loader/react-dom不是“第三方”库-它与react-dom相同,只是将某些补丁应用于dev mode(您可以检查构建脚本)。

它只是移动了一些黑魔法,RHL用来工作,内部反应并实际上将其删除。 RHL ==黑魔法。 RHL +补丁==减少两倍的魔法。

答案 4 :(得分:1)

根据我上面的评论,似乎react-hot-loader想要@hot-loader/react-dom软件包而不是标准的react-dom

尽管react-dom是任何基于react的应用程序的核心部分,但我个人有点担心将其交换出去。似乎也基于一些链接的问题和代码注释,这也许是支持钩子等新反应功能的短期解决方案。

所以我想有两个选择:

  • 请稍等一下,看看他们是否放弃了该要求(也许会遇到一些热加载的极端情况)。
  • 遵循instructions摆脱警告。

答案 5 :(得分:1)

2020年末更新

第1步中,您应按以下步骤运行它:

npm i @hot-loader/react-dom@YOUR_REACT_VERSION

因为gatsby使用react版本^ 16.12.0,并且在运行上面的命令时未指定安装版本^ 17.0.1的React版本,而该版本与^ 16.x版本不兼容。