TypeScript项目中Jest报Unexpected token 'export'语法错误求助
解决Jest无法解析TypeScript
export * 语句的问题 问题根源
你把项目源码文件src/_services/index.ts加入到了transformIgnorePatterns配置中,这个配置的作用是告诉Jest跳过对指定文件的转译处理。但该文件是TypeScript文件,包含ES模块语法(export *),Jest默认无法直接解析TS/ES模块语法,必须通过ts-jest转译后才能识别。跳过转译后,Jest会直接以原生JS的方式读取该文件,自然会抛出语法错误。
修复步骤
移除错误的忽略规则
修改你的Jest配置,删除transformIgnorePatterns数组中的/src/_services/index\\.ts$/项:const createJestConfig = nextJest({ dir: './', }); const customJestConfig = { // ... 其他配置 ... transformIgnorePatterns: [ '/node_modules/', '/@bufbuild/protobuf/', // 移除这一行:'/src/_services/index\\.ts$', ], // ... 其他配置 ... }; module.exports = createJestConfig(customJestConfig);确认ts-jest转译配置正确
确保你的Jest配置中已经正确启用了ts-jest的转译规则,通常需要包含以下配置(如果尚未添加):const customJestConfig = { // ... 其他配置 ... preset: 'ts-jest', transform: { '^.+\\.(ts|tsx)$': 'ts-jest', }, // ... 其他配置 ... };清理Jest缓存并重新运行
执行以下命令清理Jest缓存,避免旧缓存影响结果:npx jest --clearCache之后重新运行你的测试命令即可。
额外说明
transformIgnorePatterns仅适用于第三方依赖(如node_modules中的包),当某些第三方依赖已经编译为ES模块但Jest无法识别时,才需要将其加入忽略列表(配合其他转译工具处理)。项目自身的TS源码文件绝对不能加入这个列表,否则会导致转译失效,引发语法错误。
内容的提问来源于stack exchange,提问作者user23424
相关产品推荐
相关产品推荐

