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

NestJs+TypeScript+Jest运行测试报Class extends value undefined错误

问题根因
  • 最常见原因是NestJS核心依赖包版本和@nestjs/testing包版本不匹配:@nestjs/testing内的TestingLoggerService需要继承@nestjs/common导出的Logger类,当两个包版本不一致时,@nestjs/common导出的类结构发生变化,就会出现继承的值为undefined的报错。
  • tsconfig配置错误:你当前的exclude配置里主动排除了./node_modules/@types/node/index.d.ts,会导致部分Node内置类型、第三方依赖的类型推导失效,也可能引发运行时的类型加载错误。
  • 缺失Jest适配TypeScript的必要依赖,或者Jest配置不正确,导致测试运行时无法正确解析NestJS的装饰器、模块导出逻辑。
解决步骤
  • 第一步:统一所有NestJS相关依赖的版本
    首先执行命令查看所有Nest包的版本:
    yarn list @nestjs/common @nestjs/core @nestjs/testing
    
    确保三个包的版本完全一致,如果不一致,安装相同版本即可,比如所有包都升级到最新LTS版本:
    yarn add @nestjs/common@latest @nestjs/core@latest @nestjs/testing@latest --dev
    
    安装完成后删除node_modules和yarn.lock重新安装依赖,避免缓存问题。
  • 第二步:修正tsconfig配置
    删除exclude数组里的./node_modules/@types/node/index.d.ts这一行,修正后的exclude配置为:
    "exclude": [
      "node_modules",
      "dist"
    ]
    
    不需要重复声明node_modules相关的匹配规则,多余的排除规则反而会引发类型加载问题。
  • 第三步:检查Jest配置
    确保你已经安装了ts-jest、@types/jest、jest相关依赖,并且项目根目录下有正确的jest配置文件(jest.config.js),参考配置如下:
    module.exports = {
      moduleFileExtensions: ['js', 'json', 'ts'],
      rootDir: 'src',
      testRegex: '.*\\.spec\\.ts$',
      transform: {
        '^.+\\.(t|j)s$': 'ts-jest'
      },
      collectCoverageFrom: ['**/*.(t|j)s'],
      coverageDirectory: '../coverage',
      testEnvironment: 'node'
    }
    
    配置完成后重新执行yarn test即可正常运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:54:03