You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript项目中Jest报Unexpected token 'export'语法错误求助

解决Jest无法解析TypeScript export * 语句的问题

问题根源

你把项目源码文件src/_services/index.ts加入到了transformIgnorePatterns配置中,这个配置的作用是告诉Jest跳过对指定文件的转译处理。但该文件是TypeScript文件,包含ES模块语法(export *),Jest默认无法直接解析TS/ES模块语法,必须通过ts-jest转译后才能识别。跳过转译后,Jest会直接以原生JS的方式读取该文件,自然会抛出语法错误。

修复步骤

  1. 移除错误的忽略规则
    修改你的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);
    
  2. 确认ts-jest转译配置正确
    确保你的Jest配置中已经正确启用了ts-jest的转译规则,通常需要包含以下配置(如果尚未添加):

    const customJestConfig = {
      // ... 其他配置 ...
      preset: 'ts-jest',
      transform: {
        '^.+\\.(ts|tsx)$': 'ts-jest',
      },
      // ... 其他配置 ...
    };
    
  3. 清理Jest缓存并重新运行
    执行以下命令清理Jest缓存,避免旧缓存影响结果:

    npx jest --clearCache
    

    之后重新运行你的测试命令即可。

额外说明

transformIgnorePatterns仅适用于第三方依赖(如node_modules中的包),当某些第三方依赖已经编译为ES模块但Jest无法识别时,才需要将其加入忽略列表(配合其他转译工具处理)。项目自身的TS源码文件绝对不能加入这个列表,否则会导致转译失效,引发语法错误。

内容的提问来源于stack exchange,提问作者user23424

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:42:05