无法配置Enzyme适配器:TypeScript报错问题求助
解决Enzyme适配器TypeScript构造签名错误的问题
这个问题确实和包的导出规范变化有关——你参考的2年前的指南对应的enzyme-adapter-react-16版本,当时可能还支持命名空间式导入,但现在的版本已经改用默认导出了,这才导致TypeScript抛出构造签名相关的错误。
为什么会报错?
你用的import * as Adapter from 'enzyme-adapter-react-16'是命名空间导入,这种方式会把整个模块的导出内容包裹成一个对象,而不是直接拿到适配器的构造函数。TypeScript检测到这个对象不具备new操作所需的构造签名,所以触发了Cannot use 'new' with an expression whose type lacks a call or construct signature的错误。
正确的配置写法
直接改用默认导入就能解决问题,这也是当前Enzyme官方推荐的写法:
import Enzyme from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() });
如果你更习惯CommonJS风格的导入,也可以使用require:
const Enzyme = require('enzyme'); const Adapter = require('enzyme-adapter-react-16'); Enzyme.configure({ adapter: new Adapter() });
额外注意事项
确保你的类型定义包和实际依赖版本匹配:
- 如果安装了
@types/enzyme和@types/enzyme-adapter-react-16,要保证它们的版本和enzyme、enzyme-adapter-react-16的主版本一致,避免出现类型不兼容的问题。
内容的提问来源于stack exchange,提问作者BURGERFLIPPER101
相关产品推荐
相关产品推荐

