使用Jest遇SyntaxError: Unexpected token 'export'错误,求配置方案
解决Jest导入change-case时的
Unexpected token 'export'错误 这个问题本质是change-case是纯ES模块,而Jest默认的模块解析规则没适配它,以下是几个可行的解决配置:
1. 调整Jest配置文件(jest.config.js/ts)
确保你的Jest配置正确处理ES模块和TypeScript:
export default { preset: 'ts-jest', testEnvironment: 'node', // 把.ts文件当作ES模块处理 extensionsToTreatAsEsm: ['.ts'], transform: { // 用ts-jest转译TypeScript,开启ES模式 '^.+\\.tsx?$': ['ts-jest', { useESM: true }], }, // 修复ES模块导入时的后缀问题 moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', }, // 让Jest转译node_modules里的change-case(默认不转译) transformIgnorePatterns: [ 'node_modules/(?!(change-case)/)', ], };
2. 检查package.json的模块类型
- 如果你的项目是ES模块(package.json里有
"type": "module"),确保Jest配置和ES模块模式匹配(上面的配置已经支持) - 如果是CommonJS项目(没有
"type": "module"),除了上面的配置,还可以尝试安装babel-jest并配置Babel来转译ES模块依赖
3. 调整导入方式
部分情况下,ES模块的导出和CommonJS的导入兼容有问题,可以试试按需导入或者默认导入:
// 按需导入(推荐) import { camelCase, snakeCase } from 'change-case'; // 或者默认导入 import recase from 'change-case';
内容的提问来源于stack exchange,提问作者Mike M
相关产品推荐
相关产品推荐

