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

Jest自定义测试环境无法识别绝对导入路径该如何解决?

问题根因

你配置的moduleNameMapper与tsconfig路径映射仅对Jest执行的测试用例代码生效,自定义测试环境的加载时机早于Jest模块解析规则、ts-jest转译逻辑的生效时间,因此绝对路径无法被识别。


解决方案

方案1:使用tsconfig-paths处理路径映射(推荐)

无需修改现有配置,新增依赖注册路径映射规则即可:

  1. 安装依赖
npm install --save-dev tsconfig-paths
  1. 修改testEnvironment.ts,在文件最顶部注册路径规则
// 首行添加,自动读取tsconfig中的路径配置
require('tsconfig-paths/register');

const NodeEnvironment = require('jest-environment-node');
import config from 'src/config';

// 剩余原有代码保持不变

如果自动注册不生效,可以手动指定参数适配你的目录结构:

const path = require('path');
require('tsconfig-paths').register({
  // 指向你的项目根目录
  baseUrl: path.resolve(__dirname, '../..'),
  paths: {
    "src/*": ["src/*"]
  }
});

方案2:预编译自定义测试环境

不想引入额外依赖可以选择提前转译测试环境文件:

  1. 修改tsconfig的exclude规则,排除对测试环境文件的过滤,执行tsc命令编译得到testEnvironment.js
  2. 修改jest.config.js的testEnvironment配置,指向编译后的js文件路径即可
module.exports = {
  testEnvironment: './build/testUtils/testEnvironment.js',
  // 其余配置保持不变
}

该方案需要每次修改测试环境代码后重新编译,适合测试环境不常变动的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:06:01