关于如何摆脱 Cannot find module 'ReactElementType' from 'ReactRef.js' when 运行 Jest Tests 的任何想法

Any ideas on how to get rid of Cannot find module 'ReactElementType' from 'ReactRef.js' when running Jest Tests

我将 react-native 升级到 0.39.0 并将 jest 升级到 17。出于某种原因,当我 运行 我的测试时,jest 17 在多个测试中抛出错误。但是 Jest 工作正常吗?

  ● Test suite failed to run

Cannot find module 'ReactElementType' from 'ReactRef.js'

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:151:17)
  at Object.<anonymous> (node_modules/react-native/Libraries/Renderer/src/renderers/shared/stack/reconciler/ReactRef.js:14:344)
  at Object.<anonymous> (node_modules/react-native/Libraries/Renderer/src/renderers/shared/stack/reconciler/ReactReconciler.js:14:14)

结果是 react-native 38 及以上结合 "babel-jest": "^17.0.0" 导致了这个问题。 "babel-jest":“^16.0.0”对我来说很好。

如果您使用旧版本的 babel-plugin-flow-react-proptypes(最高 0.18)和相当新的 React Native(0.38 及更高版本),就会发生这种情况。

有关详细信息,请参阅 this 问题。

升级到插件的 0.19 版本似乎可以解决问题。无论您使用哪个 babel-jest 版本,这都有效,即使是 18.0.0.

即使您没有使用 babel-plugin-flow-react-proptypes,您也可能想阅读他们的 explanations 以了解可能导致此类错误的原因,其中 Flow 类型未被正确剥离。

(请注意,正如您在上述问题中看到的那样,有些人在升级后开始遇到不同的错误。目前在 iOS 中尝试 运行 应用程序时似乎确实是这种情况=],不过希望这个问题能在不久的将来得到解决。)