无法从'ReactDebugTool.js'中找到模块'react / lib / ReactComponentTreeHook'

时间:2017-06-21 15:30:54

标签: javascript node.js reactjs jestjs

我正在尝试让Jest对我的React应用程序进行快照测试。我的package.json中的版本:

  "react": "15.6.1",
  "react-dom": "15.6.1",
  "react-test-renderer": "15.6.1",

我无法理解这个错误:

● Test suite failed to run


Cannot find module 'react/lib/ReactComponentTreeHook' from 'ReactDebugTool.js'

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:179:17)
  at Object.<anonymous> (node_modules/react-test-renderer/lib/ReactDebugTool.js:16:30)

我已经尝试删除并重新安装我的node_modules目录,并且我已经验证了我的组件的路径是正确的但仍然会出现同样的错误。

我的测试看起来像这样:

import React from 'react';
import renderer from 'react-test-renderer';
import { Section } from '../../app/views/containers/section';

it('renders correctly', () => {
  const section = renderer.create(
    <Section key="1" section="finance"/>
  ).toJSON();
  expect(section).toMatchSnapshot();
});

我做错了什么?

3 个答案:

答案 0 :(得分:32)

上周遇到类似的问题,我们有一个最近升级到的反应原生项目:

// using SIMD
let pivCou = float4x4(nodeCenterOfUniverse.pivot)
let posCou = float3(nodeCenterOfUniverse.position)
let posCou4 = float4(posCou.x, posCou.y, posCou.z, 1.0) // convert float3 to float4
let posPlanet = float3(nodePlanet.position)
let posPlanet4 = float4(posPlanet.x, posPlanet.y, posPlanet.z, 1.0)

let worldcoordinatesPlanet = posCou4 + posPlanet4 * pivCou

然后我们尝试运行我们的Jest测试,我们看到了与您上面提到的相同的问题。然后我们意识到有一个最前沿的版本 react-test-renderer,我们尝试了一下:

"react-native": "0.45.1" "react": "16.0.0-alpha.12" "jest": "20.0.4" "react-test-renderer": "15.5.4"

现在问题不再存在。

答案 1 :(得分:7)

在0.47.0

仍然有错误,接受的答案必须执行以下操作:

"react-dom": "^16.0.0-beta.5", "react-test-renderer": "16.0.0-alpha.12",

酶将适用于上述变化,但任何类型的模拟都不会被禁用,直到它们支持为止。

答案 2 :(得分:2)

升级到React 16.0.0时,我确实注意到你确实需要将react-dom升级到16.0.0并且它完美无瑕!