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

Ag-Grid单元测试中Jest遇Unexpected Token错误求助

Ag-Grid 30.0.6 集成 Jest 测试报错:Unexpected token 'export'

可复现场景

执行npx jest命令,使用的Ag-Grid包版本:

  • "@ag-grid-community/client-side-row-model": "^30.0.6"
  • "@ag-grid-community/core": "^30.0.6"
  • "@ag-grid-community/styles": "^30.0.6"

错误详情

Jest无法解析文件,抛出意外token错误,具体报错:

C:\repo\project\node_modules@ag-grid-community\core\dist\esm\es6\main.mjs:15
export { ColumnFactory } from "./columns/columnFactory.mjs";
^^^^^^
SyntaxError: Unexpected token 'export'

错误触发点:测试文件src/test/unit/GridUtils.test.ts第7行导入@ag-grid-community/core的语句。

已尝试的无效方案

  1. 配置了包含transform、transformIgnorePatterns的初始jest.config.js
  2. 使用Ag-Grid社区推荐的自定义解析器myResolver.ts修改配置

环境信息

  • 系统:Windows 10
  • 开发工具:VSCode、NPM
  • 依赖版本:Ag Grid 30.0.6、TypeScript 5.1.6
  • 目标环境:VSCode WebView/IFrame(ES6)

解决方案

该问题源于Jest默认未处理node_modules中的ES模块(.mjs格式),需调整配置让Jest正确转译Ag-Grid相关包:

1. 更新jest.config.js配置

修改转译规则,让Jest处理Ag-Grid的.mjs文件:

/** @type {import('jest').Config} */
const config = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  transform: {
    '^.+\\.(ts|tsx)$': 'ts-jest',
    '^.+\\.mjs$': 'ts-jest' // 用ts-jest处理mjs格式文件
  },
  transformIgnorePatterns: [
    'node_modules/(?!(@ag-grid-community)/)' // 排除Ag-Grid包,允许Jest转译它们
  ],
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node', 'mjs'],
  extensionsToTreatAsEsm: ['.ts', '.mjs']
};

module.exports = config;

2. 升级适配依赖

确保ts-jest版本支持.mjs转译,执行升级命令:

npm install ts-jest@latest jest@latest @types/jest@latest --save-dev

3. 调整TypeScript配置(tsconfig.json)

确保TS配置支持ES模块输出:

{
  "compilerOptions": {
    "module": "ESNext",
    "target": "ES6",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:22