使用Jest测试NestJS+Prisma项目时无法找到PrismaService
解决Jest测试时找不到PrismaService模块的问题
问题原因
Jest默认无法识别项目中src/开头的绝对路径导入规则,需要配置路径映射让Jest正确解析模块位置。
解决方案
1. 配置tsconfig.json的路径映射
打开项目根目录的tsconfig.json,在compilerOptions中添加baseUrl和paths配置,将src设为根路径:
{ "compilerOptions": { // 保留原有其他配置 "baseUrl": "./", "paths": { "src/*": ["src/*"] } } }
2. 同步Jest配置解析路径
修改项目根目录的jest.config.js(或jest.config.ts),添加moduleNameMapper和modulePaths配置,匹配tsconfig的路径规则:
module.exports = { // 保留原有其他配置 moduleNameMapper: { 'src/(.*)': '<rootDir>/src/$1', }, modulePaths: ['<rootDir>'], };
如果使用了e2e测试配置文件(如jest-e2e.json),也需要同步添加上述配置。
3. 检查路径大小写与拼写
确认实际文件路径的拼写和大小写与导入语句完全一致:
- Linux/macOS系统区分路径大小写,比如
prismaService和PrismaService会被视为不同路径 - 检查
src/prismaService/prisma.service.ts文件是否真实存在,无拼写错误
4. 临时验证:改用相对路径(不推荐长期使用)
将urls/service/urls.service.ts中的导入语句改为相对路径,快速验证是否为路径配置问题:
// 替换原有绝对路径导入 import { PrismaService } from '../../prismaService/prisma.service';
内容的提问来源于stack exchange,提问作者omarsabra
相关产品推荐
相关产品推荐

