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

GitHub Actions运行jest时报jest.config.ts的registerer.enabled不是函数错误

错误原因
  • 该报错为Jest加载TypeScript格式配置文件时的依赖兼容问题,本地运行正常是因为本地依赖版本匹配,CI环境触发问题的核心原因包括:
    1. jest与ts-jest大版本不匹配,两者大版本必须完全一致才能保证兼容,如jest 29必须搭配ts-jest 29使用
    2. ts-jest v29及以上版本废弃了ts-jest/utils的导入路径,pathsToModuleNameMapper改为从ts-jest根路径直接导出,旧导入方式会导致配置加载异常
    3. 使用ESM语法export default导出配置,Jest默认采用CommonJS模式加载TS配置文件,语法不兼容触发加载失败
    4. CI环境未使用lockfile安装依赖,安装的依赖版本与本地不一致,导致本地运行正常CI报错
修复方案
  • 第一步:对齐jest和ts-jest版本,保证两者大版本一致,同时提交package-lock.json/yarn.lock/pnpm-lock.yaml到仓库,CI安装依赖使用npm ci(pnpm对应pnpm i --frozen-lockfile,yarn对应yarn install --frozen-lockfile),确保CI依赖版本和本地完全相同
  • 第二步:修改ts-jest的导入写法,适配新版本规范:
    把配置中对应代码块
import tsJestUtils from 'ts-jest/utils'
const { pathsToModuleNameMapper } = tsJestUtils

替换为

import { pathsToModuleNameMapper } from 'ts-jest'
  • 第三步:修改配置导出方式,把export default config改为module.exports = config,符合Jest默认的CommonJS加载逻辑
  • 可选替代方案:将jest.config.ts改为jest.config.js,用JS编写配置,从根源避免TS配置加载的兼容问题
  • 如果需要保留ESM导出方式,可以修改package.json的test脚本为:
"test": "NODE_OPTIONS=--experimental-vm-modules jest"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:18:03