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

Jest+Nestjs+Supertest测试报错:无法找到src/service模块

解决Jest全局初始化时找不到src/service模块的问题

问题背景

运行Jest测试时出现以下错误:

Error: Jest: Got error running globalSetup -
reason: Cannot find module src/service

项目结构为:

  • src
  • qa

qa目录下的Jest配置尝试了多种moduleNameMapper规则,但均无效;将导入语句改为相对路径../service可正常运行,但开发人员拒绝修改路径。

核心原因

  1. 当前moduleNameMapper配置规则错误,未正确映射src/开头的模块路径
  2. Jest的globalSetup/globalTeardown文件在模块系统初始化阶段执行,常规路径映射可能未生效
  3. TypeScript的baseUrl配置(src目录下的./)与Jest的rootDir(项目根目录)未对齐

解决方案

方案1:修正moduleNameMapper并规范路径配置

修改qa目录下的Jest配置文件,调整以下内容:

import { InitialOptions } from '@jest/types/build/Config';
const config: InitialOptions = {
  verbose: true,
  preset: 'ts-jest',
  testEnvironment: 'node',
  moduleFileExtensions: ['js', 'json', 'ts'],
  rootDir: '../',
  // 使用<rootDir>变量指定全局文件路径,避免相对路径歧义
  globalSetup: '<rootDir>/qa/global-setup.ts',
  globalTeardown: '<rootDir>/qa/global-teardown.ts',
  testRunner: 'jest-jasmine2',
  testRegex: '.*-spec.ts$',
  transform: {
    '^.+\\.ts$': 'ts-jest',
  },
  setupFilesAfterEnv: ['jest-allure/dist/setup'],
  testTimeout: 40 * 1000,
  // 修正moduleNameMapper,正确映射src开头的模块
  moduleNameMapper: {
    '^src/(.*)$': '<rootDir>/src/$1',
  },
  transformIgnorePatterns: ['/node_modules/'],
};

export default config;

方案2:在global-setup.ts手动添加模块搜索路径

如果方案1无效,可在global-setup.ts最顶部添加代码,将src目录加入Node的模块搜索路径:

import path from 'path';
import { fileURLToPath } from 'url';

// 适配ES模块的路径解析
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// 将项目根目录下的src目录加入模块搜索列表
require('module').paths.push(path.resolve(__dirname, '../src'));

// 后续的导入语句
import { Service } from 'src/service';

方案3:对齐TypeScript与Jest的模块路径配置

在Jest配置中添加modulePaths,与TypeScript的baseUrl效果对齐:

const config: InitialOptions = {
  // ...其他配置
  modulePaths: ['<rootDir>/src'],
};

验证步骤

  1. 保存所有配置修改
  2. 重新执行测试命令
  3. 检查是否仍存在模块找不到的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:33:15