Jest测试中fraction.js报TypeError: Fraction不是构造函数的解决方法
解决Jest测试中Fraction不是构造函数的问题
针对你在Jest测试里遇到的TypeError: Fraction is not a constructor错误,结合你的tsconfig配置,可尝试以下几种解决方式:
1. 改用命名导入
部分模块在Jest的模块解析逻辑下,默认导入可能无法正确识别构造函数,试试用命名导入替换默认导入:
import { Fraction } from "fraction.js"; export const multiply = (num1: number, num2: number) => { return new Fraction(num1).mul(num2).valueOf(); }
2. 同步Jest与TS的esModuleInterop配置
你的tsconfig已经开启了esModuleInterop,但Jest自身的配置也需要同步开启这个选项,才能正确处理ES模块的默认导入。在jest.config.js(或jest.config.ts)中添加:
module.exports = { // 保留你已有的其他配置,比如transform、testMatch等 esModuleInterop: true, allowSyntheticDefaultImports: true };
3. 确保类型依赖正确安装
如果未安装fraction.js的TypeScript类型定义包,可能导致导入解析异常,执行以下命令安装:
npm install @types/fraction.js --save-dev
4. 强制获取默认导出构造函数
如果上述方法都无效,可尝试手动提取模块的默认导出:
import * as FractionModule from "fraction.js"; const Fraction = FractionModule.default; export const multiply = (num1: number, num2: number) => { return new Fraction(num1).mul(num2).valueOf(); }
内容的提问来源于stack exchange,提问作者sookie
相关产品推荐
相关产品推荐

