Jest测试中如何导入其他文件函数?导入导出语法报错如何解决
解决方案
你的报错本质是ES模块规范和Node默认CommonJS规范不兼容,以及代码内TypeScript类型语法未被转译导致的,按以下步骤配置即可解决:
1. 安装依赖
执行以下命令安装所需的转译工具:
npm install --save-dev @babel/core @babel/preset-env @babel/preset-typescript babel-jest jest
2. 配置Babel
在项目根目录新建babel.config.js,写入以下内容:
module.exports = { presets: [ ["@babel/preset-env", { targets: { node: "current" } }], "@babel/preset-typescript" ] };
3. 配置Jest
在项目根目录新建jest.config.js,写入以下内容:
module.exports = { transform: { "^.+\\.[tj]sx?$": "babel-jest" }, moduleFileExtensions: ["js", "ts", "jsx", "tsx", "json", "node"] };
4. 调整测试文件导入写法
测试文件统一使用ES6 import语法导入方法即可:
import { func1, func2 } from './funcfile'; // 后续编写测试逻辑
注意事项
- 不要在package.json中添加
"type": "module"配置,已添加的请删除 - 现有业务文件的
export导出语法无需修改,Babel会自动完成转译
内容的提问来源于stack exchange,提问作者Roy Azami
相关产品推荐
相关产品推荐

