ERROR [ExceptionHandler] Nest can't resolve dependencies of the SeatsService (SeatRepository, ?, +). Please make sure that the argument dependency at index [1] is available in the SeatsModule context.

Jean·2023년 8월 3일
0

우선 해당 서비스에 들어가서 어떤 것이 안되는 지 확인한다
나 같은 경우는 두개의 서비스를 임포트했는데 둘다 확인이 안되었다

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,
  ) {}
profile
햇내기 개발자 지망생

0개의 댓글