Jest 测试中的 Preact Compat 不兼容性
Preact Compat incompatibility in Jest tests
我正在使用 preact 8.4.2 并且也有 preact-compat。
我正在使用 linkifyjs/react
在文本中呈现链接。这在开发中工作正常,但我的测试在尝试导入依赖于 React 的“linkifyjs/react”库时失败并出现此错误:
● Test suite failed to run
TypeError: Cannot redefine property: type
at Function.defineProperty (<anonymous>)
1 | import {h, Component, createRef} from 'preact';
> 2 | import Linkify from 'linkifyjs/react';
| ^
我真的不确定这个错误是什么意思,我很困惑,因为 preact-compat 应该允许使用具有 React 依赖项的库。堆栈跟踪指向 preact-compat/src/index.js:60 其中有:
Object.defineProperty(VNode.prototype, 'type', {
get() {
return this.nodeName;
},
set(v) {
this.nodeName = v;
},
configurable: true
});
我运行遇到了同样的问题。对我造成问题的原因是 preact-compat
和 enzyme-adapter-preact-pure
都试图让 Preact vNode 看起来像 React 元素。
https://github.com/preactjs/enzyme-adapter-preact-pure/pull/62
enzyme-adapter-preact-pure
的这个 pull request 已经为我解决了这些问题。所以使用 enzyme-adapter-preact-pure@^2.0.1 一切正常。
我正在使用 preact 8.4.2 并且也有 preact-compat。
我正在使用 linkifyjs/react
在文本中呈现链接。这在开发中工作正常,但我的测试在尝试导入依赖于 React 的“linkifyjs/react”库时失败并出现此错误:
● Test suite failed to run
TypeError: Cannot redefine property: type
at Function.defineProperty (<anonymous>)
1 | import {h, Component, createRef} from 'preact';
> 2 | import Linkify from 'linkifyjs/react';
| ^
我真的不确定这个错误是什么意思,我很困惑,因为 preact-compat 应该允许使用具有 React 依赖项的库。堆栈跟踪指向 preact-compat/src/index.js:60 其中有:
Object.defineProperty(VNode.prototype, 'type', {
get() {
return this.nodeName;
},
set(v) {
this.nodeName = v;
},
configurable: true
});
我运行遇到了同样的问题。对我造成问题的原因是 preact-compat
和 enzyme-adapter-preact-pure
都试图让 Preact vNode 看起来像 React 元素。
https://github.com/preactjs/enzyme-adapter-preact-pure/pull/62
enzyme-adapter-preact-pure
的这个 pull request 已经为我解决了这些问题。所以使用 enzyme-adapter-preact-pure@^2.0.1 一切正常。