NestJS集成Prisma报错:找不到src/prisma/prisma.module.js模块
NestJS + Prisma 模块找不到错误解决
错误信息
Error : Cannot find module 'src/prisma/prisma.module.js' Require stack: - /home/cedric/Bureau/programmation/project_bank/project/dist/auth/auth.module.js - /home/cedric/Bureau/programmation/project_bank/project/dist/app.module.js - /home/cedric/Bureau/programmation/project_bank/project/dist/main.js
问题背景
开发基于NestJS和Prisma的项目时,尝试给PrismaModule添加@Global装饰器后撤销操作,但上述错误依然存在,推测是编译缓存或代码路径问题导致。
相关代码文件
prisma.module.ts
import { Module } from '@nestjs/common'; import { PrismaService } from './prisma.service'; @Module({ providers: [PrismaService], exports: [PrismaService], }) export class PrismaModule {}
prisma.service.ts(测试文件)
import { Test, TestingModule } from '@nestjs/testing'; import { PrismaService } from './prisma.service'; describe('PrismaService', () => { let service: PrismaService; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [PrismaService], }).compile(); service = module.get<PrismaService>(PrismaService); }); it('should be defined', () => { expect(service).toBeDefined(); }); });
AuthModule
import { Module } from "@nestjs/common"; import { PrismaModule } from "src/prisma/prisma.module.js"; import { PrismaService } from "src/prisma/prisma.service.js"; import { AuthController } from "./auth.controller.js"; import { AuthService } from "./auth.service.js"; @Module({ imports: [PrismaModule], controllers: [AuthController], providers: [AuthService, PrismaService], }) export class AuthModule {}
app.module.ts
import { CustomersModule } from './customers/customers.module'; import { PrismaModule } from './prisma/prisma.module'; @Module({ imports: [AuthModule, CustomersModule, PrismaModule, ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
解决步骤
修正导入路径后缀
TypeScript项目中导入文件无需添加编译后的.js后缀,编译器会自动处理。修改AuthModule的导入语句:import { PrismaModule } from "src/prisma/prisma.module"; import { PrismaService } from "src/prisma/prisma.service"; import { AuthController } from "./auth.controller"; import { AuthService } from "./auth.service";补全AppModule的缺失导入
app.module.ts中使用了AuthModule但未添加对应导入语句,需补充:import { AuthModule } from './auth/auth.module'; import { CustomersModule } from './customers/customers.module'; import { PrismaModule } from './prisma/prisma.module';清理编译产物并重新构建
- 删除项目根目录下的
dist文件夹:
Linux/Mac:rm -rf dist
Windows:rmdir /s dist - 重新编译项目:
npm run build(或yarn build) - 启动服务:
npm run start(或yarn start)
- 删除项目根目录下的
额外优化:避免重复注入服务
由于PrismaModule已导出PrismaService,AuthModule无需在providers数组中再次声明,只需保留AuthService即可:providers: [AuthService],
内容的提问来源于stack exchange,提问作者Cédric Leroy
相关产品推荐
相关产品推荐

