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的语句。
已尝试的无效方案
- 配置了包含
transform、transformIgnorePatterns的初始jest.config.js - 使用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
相关产品推荐
相关产品推荐

