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

Jest无法识别@src等路径别名,多tsconfig配置的React+TS项目报错

错误原因与修复方案

以下3处核心配置错误导致路径识别失效,逐一修改即可:

1. 修正Jest的moduleNameMapper配置

当前规则未捕获别名后的路径段,也没有用Jest内置的<rootDir>变量定位路径,导致映射完全失效。
修改client/jest.config.js中的moduleNameMapper字段:

moduleNameMapper: {
  '^@src/(.*)$': '<rootDir>/src/$1',
  '^@components/(.*)$': '<rootDir>/src/components/$1',
  // 其他原有映射规则保留
}

<rootDir>默认指向jest.config.js所在的client目录,可保证路径定位准确,正则捕获的$1会把别名后的路径段拼接到目标路径上。

2. 修正所有tsconfig的paths语法错误

所有配置中@components的路径匹配规则缺少通配符*,无法匹配@components/xxx形式的导入路径:

  • 根目录tsconfig.json修改:
"paths": {
  "@src/*": ["./src/*"],
  "@components/*": ["./src/components/*"]
},
  • client/test/tsconfig.json修改:
"paths": {
  "~/*": ["./*"],
  "@src/*": ["./src/*"],
  "@components/*": ["./src/components/*"]
},

3. 补充测试目录tsconfig的继承配置(可选但强烈建议)

client/test/tsconfig.json未继承上层tsconfig配置,容易出现编译规则不一致的问题,新增extends字段:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    // 原有配置全部保留
  }
}

优化方案(避免维护两份别名配置)

如果不想手动同步Jest和tsconfig的别名配置,可以用ts-jest提供的pathsToModuleNameMapper工具自动生成映射,修改client/jest.config.js:

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

module.exports = {
  // 其他原有配置全部保留
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {
    prefix: '<rootDir>/'
  })
};

所有修改完成后清空Jest缓存再运行测试即可:npx jest --clearCache


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:18:03