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

如何在NestJS中结合tsconfig泛型路径(*)配置Jest的moduleNameMapper?

Jest配置匹配tsconfig多路径映射方案

针对你tsconfig中baseUrl: "src"和paths: { "*": ["domain/*", "*"] }的配置,以下是可行的Jest配置方案:

手动配置moduleNameMapper

在jest.config.js(或jest.config.ts)中添加如下配置:

module.exports = {
  // 保留你的其他Jest配置
  modulePaths: ['<rootDir>/src'],
  moduleNameMapper: {
    '^(.*)$': ['<rootDir>/src/domain/$1', '<rootDir>/src/$1']
  },
  preset: 'ts-jest' // 如果你使用ts-jest
};

关键细节

  • modulePaths对应tsconfig的baseUrl,告诉Jest模块查找的根目录位置
  • moduleNameMapper里的^(.*)$正则会匹配所有导入路径,按照domain/*优先、原路径次之的顺序查找,和tsconfig的路径优先级保持一致

关于ts-jest的pathsToModuleNameMapper无效的问题

如果之前使用这个工具函数没生效,大概率是没正确设置prefix参数,试试这个写法:

const { pathsToModuleNameMapper } = require('ts-jest');
const tsConfig = require('./tsconfig');

module.exports = {
  modulePaths: [tsConfig.compilerOptions.baseUrl],
  moduleNameMapper: pathsToModuleNameMapper(tsConfig.compilerOptions.paths, {
    prefix: '<rootDir>/'
  }),
};

要是仍无效,建议直接用上面的手动配置,兼容性更稳定。

NestJS与Vitest的说明

你记忆正确,当前NestJS官方并未提供Vitest的原生支持,官方推荐的测试框架为Jest,所以继续基于Jest配置路径映射是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:47:24