Jest 失败并出现错误:找不到module“react/lib/ReactComponentTreeHook”

IT技术 reactjs jestjs
2021-05-09 15:27:00

我已经在我的 React 项目中安装了 Jest v17.0.3。

当我在本地运行 jest 时它工作正常,但在构建服务器上它失败了:

错误:无法从“ReactDebugTool.js”中找到module“react/lib/ReactComponentTreeHook”

两台机器都运行 node 版本 6.9.1 和 npm 版本 4.0.2。

4个回答

使用相同版本的 react 和 react-dom。使用此命令后我的问题已解决

npm install --save react@15.4.0 react-dom@15.4.0

这个问题特别发生在 react 15.4.0 以上。

你能检查一下你使用的是哪个版本的 React 吗?两台服务器都一样吗?我会尝试删除node_modules并重新安装依赖项。我建议这样做的原因是,在 React v15.4.0 中您不能导入私有 apis,而且似乎ReactDebugTools.js正在尝试从react/lib/....

来自关于 React v15.4.0 的博文(链接):

但是,您可能从 react/lib/* 导入了私有 API,或者您依赖的包可能会使用它们。我们想提醒您,这从未得到支持,您的应用程序不应依赖于内部 API。随着我们努力使 React 变得更好,React 内部结构将不断变化。

希望这可以帮助!

在最新版本的 react 中,我们经常看到这个错误,因为我们已经加载了 2 个版本的 react:

要确保您只有 1 个版本,请在终端中运行以下命令:

  1. npm ls react-dom 在此处输入图片说明

  2. npm ls react 在此处输入图片说明

react 和 react-dom 版本都需要相同。如果其中任何一个返回超过 1 个版本,则不支持。然后您必须在相应的 package.json 中更正它

我遇到了同样的问题,我删除了 node_modules 并运行了 npm install 并解决了问题。