[Nest.JS] @Module의

공유 모듈을 사용하는 동안 오류가 발생했습니다.

@기준 치수그것에 대해 공부하고 해결하기 위해 완성한 것을 게시하겠습니다.

첫 번째 @기준 치수먼저 알아봅시다.

모듈이란 무엇입니까?


공식 Nest 문서

모든 애플리케이션에는 적어도 하나의 모듈인 루트 모듈이 있습니다.

루트 모듈은 Nest가 애플리케이션 다이어그램을 생성하는 데 사용하는 시작점입니다.

Nest에서 모듈 및 공급업체 관계 및 종속성을 해결하는 데 사용하는 내부 데이터 구조입니다.

매우 작은 응용 프로그램은 이론적으로 하나의 루트 모듈만 가질 수 있지만 일반적으로 그렇지 않습니다.

구성 요소를 구성하는 효과적인 방법으로 모듈을 적극 권장한다는 점을 강조하고 싶습니다.

따라서 대부분의 애플리케이션에서 결과 아키텍처는 각각 밀접하게 관련된 기능 집합을 캡슐화하는 여러 모듈을 사용합니다.

공식 Nest 문서는 이와 같은 모듈을 설명합니다.

간단히 말해서

수업에 @기준 치수 데코레이터 및 모든 Nest 애플리케이션과 함께 선언됩니다.

적어도 하나의 루트 모듈가지다

구성 요소를 구조화하기 위해 기능과 역할그에 따라 모듈화되어야 합니다.

-수입

  • 현재 모듈에서 가져오기 모듈배열에는 다음이 포함됩니다.

  • 가져올 외부 모듈 관련된 모듈에서 수출 공급자 해야 할
  • 주로 법인파일 또는 기타 모듈 포함

-제어 장치

  • 이 모듈에서 사용 제어 장치배열에는 다음이 포함됩니다.

– 제공자

  • 이 모듈을 설치 시주배열에는 다음이 포함됩니다.

  • 네스트 인젝터(@ 주사 가능)에 의해 인스턴스화됩니다.

    적어도 이 모듈에서 공유됨 할 수 있는 공급자
  • 주로 서비스자산, 저장소자산

-수출

  • 다른 모듈에서 가져올 때 사용할 공급자배열에는 다음이 포함됩니다.

간단한 개념인데 내용을 대략적으로 알고 있어서 오류가 발생했습니다.

그 상황 투표 모듈~에 코멘트 서비스사용해야 하는 경우였습니다.

이 경우 각 모듈에 관련 정보를 작성해야 하는데 너무 무작정 사용했기 때문에 이런 오류가 발생한 것입니다.

ERROR(ExceptionHandler) Nest는 CommentService(?)의 종속성을 해결할 수 없습니다.

CommentQueryRepository 인수가 VotesModule 컨텍스트의 인덱스(0)에서 사용 가능한지 확인하십시오.

잠재적 솔루션:
– VotesModule은 유효한 NestJS 모듈입니까?
– CommentQueryRepository가 공급자인 경우 현재 VotesModule의 일부입니까?
– CommentQueryRepository가 별도의 @Module에서 내보낸 경우 해당 모듈을 VotesModule로 가져왔습니까?
@기준 치수({
가져오기: ( /* CommentQueryRepository를 포함하는 모듈 */ )
})


그래서 모듈 쪽을 연구해서 재개발했습니다.


댓글 모듈에서 코멘트 서비스 수출

투표 모듈에서 주석 모듈 수입 그것을하고 당신은 끝났습니다.

여기서 기다려..!

이러한 질문도 할 수 있습니다.

음성 모듈 가져오기에서 직접 CommentService넣어야 되는거 아닌가..?

답은 그렇게 해도 코드에 문제가 없다는 것입니다.

하지만 코멘트 서비스 자신을 삽입하면 개체가 지속적으로 인스턴스화되어 메모리에 축적됩니다.

이는 불필요한 디스크 공간을 차지하여 성능에 영향을 미칩니다.

마지막으로 성능을 고려한 코드를 작성해야 합니다.

주석 모듈 수입 해보자.