이 전에 이미 @Module 데코레이터의 속성에 관한 글을 적은 바 있지만, 이해를 정확히 하지 못했기에 이 글을 작성한다.
provider를 가지고 있는 모듈을 정의provider가 있을 경우, 해당 provider를 가지고 있는 모듈에서 export 해줘야 함)HttpModule(API 호출 모듈)이 있음TypeOrmModule 이용하여 참조할 레포지토리를 가져오기도 함Nest Js에서 모듈은 기본적으로 싱글턴(Singleton)이기 때문에 여러 모듈 간에 쉽게 providers의 동일한 인스턴스를 공유할 수 있다.
때문에 모든 모듈은 공유 모듈(Shared modules)이 되며, 일단 생성되면 모든 모듈에서 재사용할 수 있다.
예를 들어 다른 모듈에서 bookservice 인스턴스를 공유하며 사용하고 싶을 때, 아래와 같이 exports에 bookservice(providers)를 추가하여 내보내기를 해야한다.
book.module.ts
@Module({
controllers: [BookController],
providers: [BookService],
exports: [BookService]
})
export class BookModule {}
cook.module.ts
@Module({
imports: [BookModule],
controllers: [CookController]
})
export class CookModule {}
만약
SubModule에서imports할 때StudyService라고 작성하면?
=>'Nest can't resolve dependencies of the SubController'오류발생