이 전에 이미 @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'
오류발생