imports와 exports

·2023년 2월 16일
0

NestJS

목록 보기
6/6

이 전에 이미 @Module 데코레이터의 속성에 관한 글을 적은 바 있지만, 이해를 정확히 하지 못했기에 이 글을 작성한다.


imports

  • 해당 모듈에서 사용하는 provider를 가지고 있는 모듈을 정의
    (사용하기 위한 provider가 있을 경우, 해당 provider를 가지고 있는 모듈에서 export 해줘야 함)
  • 흔하게 임포트 하는 모듈 중 HttpModule(API 호출 모듈)이 있음
  • TypeOrmModule 이용하여 참조할 레포지토리를 가져오기도 함

exports

  • 해당 모듈에서 제공하는 provider를 다른 모듈에서 사용할 수 있게 함

Nest Js에서 모듈은 기본적으로 싱글턴(Singleton)이기 때문에 여러 모듈 간에 쉽게 providers의 동일한 인스턴스를 공유할 수 있다.

때문에 모든 모듈은 공유 모듈(Shared modules)이 되며, 일단 생성되면 모든 모듈에서 재사용할 수 있다.

예를 들어 다른 모듈에서 bookservice 인스턴스를 공유하며 사용하고 싶을 때, 아래와 같이 exportsbookservice(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' 오류발생

  • imports는 반드시 모듈 형태로 가져와야 함
profile
개발자가 되는 과정

0개의 댓글