Проблема с не явной связью между Guard и Module
есть Guard в котором юзается сервис(в данном случее prismaService)
import { PrismaService } from '@/prisma/prisma.service';
import { CanActivate, Injectable } from '@nestjs/common';
@Injectable()
export class UserAlreadyExistGuard implements CanActivate {
constructor(private readonly prismaService: PrismaService) {}
async canActivate(): Promise<boolean> {
//prismaService code ...
return true;
}
}
есть контроллер который юзает этот Guard
import { Module } from '@nestjs/common';
import { PrismaModule } from '@/prisma/prisma.module';
@Module({
controllers: [YModule],
imports: [PrismaModule],
})
export class YModule {}
import { Controller, Get, UseGuards } from '@nestjs/common';
import { UserAlreadyExistGuard } from '@/user/guards/user-already-exist.guard';
@Controller('y')
export class YController {
constructor() {}
@UseGuards(UserAlreadyExistGuard)
@Get('/y')
get() {
return 'y';
}
}
Проблема в том, что связь между @UseGuards(UserAlreadyExistGuard) и импортом PrismaModule в декараторе @Module модуля Y вообще отсутствует.
Допустим, я удалю UserAlreadyExistGuard, так импорт PrismaModule останется мертвым грузом в модуле YModule