우선 해당 서비스에 들어가서 어떤 것이 안되는 지 확인한다
나 같은 경우는 두개의 서비스를 임포트했는데 둘다 확인이 안되었다
constructor(
@InjectRepository(Seat) private seatsRepository: Repository<Seat>,
private reservationsService: ReservationsService, //오류
private showService: ShowsService, //오류
) {}
우선 모듈에 똑바로 import되어있는지 확인해야한다
@Module({
imports: [
TypeOrmModule.forFeature([Seat]),
ShowsModule,
ReservationsModule,
],
controllers: [SeatsController],
providers: [SeatsService],
exports: [SeatsService],
})
똑바로 되어있는데도 문제이면
의존성 문제일수도?
혹시 모듈들이 서로 의존하고있으면 순환 문제일수있다
//A모듈
@Module({
imports: [BModule],
//B모듈
@Module({
imports: [AModule],
서로서로 의존하느라 생기는 문제인데
이때는 forwardRef를 사용해야한다
import { forwardRef, Module } from '@nestjs/common';
@Module({
imports: [forwardRef(() =>BModule)],
//B모듈
import { forwardRef, Module } from '@nestjs/common';
@Module({
imports: [forwardRef(() =>AModule)],
또 오류가 난다면
서비스에서 다른 서비스를 불러올때
@Inject, forwardRef를 사용해보자
//A서비스
@Inject(forwardRef(() => BService))
private bService: BService,
//B 서비스
@Inject(forwardRef(() => AService))
private aService: AService,
해결한 코드
constructor(
@InjectRepository(Seat) private seatsRepository: Repository<Seat>,
@Inject(forwardRef(() => ReservationsService))
private reservationsService: ReservationsService,
@Inject(forwardRef(() => ShowsService))
private showService: ShowsService,
) {}