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

TypeScript项目中@路径别名配置无效,Jest测试报错

问题原因与解决方案

问题出在Jest不会自动读取tsconfig.json中的paths配置——VS Code和TypeScript编译器能识别别名,但Jest运行时无法解析这些路径映射,所以抛出模块找不到的错误。

解决步骤

1. 确保依赖安装(如未安装)

如果项目还没配置ts-jest,先安装必要依赖:

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

2. 配置Jest的路径映射

在项目根目录创建或修改jest.config.js,添加moduleNameMapper来映射@别名:

方式一:自动同步tsconfig的paths(推荐)

借助ts-jest提供的pathsToModuleNameMapper工具,自动转换tsconfig中的配置,避免重复维护:

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

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  // 从tsconfig同步路径别名
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }),
  // 指定测试文件根目录
  roots: ['<rootDir>/src'],
};
方式二:手动配置映射

如果不想依赖工具,直接手动写映射规则:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  moduleNameMapper: {
    // 将@/xxx映射为src/xxx
    '^@/(.*)$': '<rootDir>/src/$1',
  },
  roots: ['<rootDir>/src'],
};

3. 重新运行测试命令

配置完成后,直接执行原测试命令即可:

jest ./src/tests/**/*.test.ts --coverage --runInBand

也可以简化为jest --coverage --runInBand,Jest会自动识别src下的测试文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:42:48