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

ts-jest配置路径映射后无法定位@app前缀模块的报错如何解决?

问题原因

你遇到的路径映射失效核心原因是调用pathsToModuleNameMapper时未配置路径前缀参数:

  • pathsToModuleNameMapper不会自动读取tsconfig的baseUrl配置,默认生成的映射为相对路径,jest解析相对路径时会以执行导入的文件所在目录为基准,而非项目根目录。
  • 你在database/database.ts中导入@app/env.local.json时,jest会根据生成的./$1映射规则,去database/./env.local.json路径下查找文件,而该文件实际在项目根目录,因此抛出找不到模块的错误。
解决方案

修改jest.config.js配置,补充pathsToModuleNameMapper的前缀参数以及必填的基础配置即可:

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

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  rootDir: '.',
  moduleFileExtensions: ['ts', 'js', 'json'],
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {
    // 路径前缀绑定项目根目录,和tsconfig的baseUrl对应
    prefix: '<rootDir>/'
  })
}

修改后@app/*会被映射为<rootDir>/*,也就是项目根目录下的对应文件,即可正确识别@app/env.local.json。

ReferenceError关联说明

该报错完全和路径映射错误相关:路径导入失败触发jest测试流程提前终止,环境被销毁后,后续未执行完成的模块导入逻辑还在运行,就会抛出这个提示。路径映射问题修复后,该报错会自动消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:48:00