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
相关产品推荐
相关产品推荐

