framwork/NestJs

[NestJS] Circular dependency (순환참조) 문제 해결

닉네임없음ㅎ 2024. 2. 7. 19:30

NestJS - Circular Dependency

 

https://docs.nestjs.com/fundamentals/circular-dependency

 

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea

docs.nestjs.com

 

A circular dependency occurs when two classes depend on each other. For example, class A needs class B, and class B also needs class A. Circular dependencies can arise in Nest between modules and between providers.

 

공식문서를 확인해보면 

순환의존성이란 두개의 클래스가 서로를 의존하고 있을때 발생한다고 한다. 

(예를들어 클래스 A가 B를 필요로하고, 클래스 B가 A를 필요로 하는 경우)

 

순환 의존성은 가능하다면 피하는것이 좋지만, 항상 그럴수는 없다!

 




*문제발생 

 

Module1

Module2 

이렇게 두개의 모듈이 있다고 가정하였을 때, 

Module1의 Service1과 

Module2의 Service2가 서로 의존 주입을 하려고 하면 circular dependency 문제가 발생한다. 

 

 

 

*해결방법

  • @nestjs/common에서 패키지로 제공해주는 forwardRef() 를 사용한다.

이렇게 모듈을 import 할때 forwardRef를 명시해준다. 

 

모듈을 주입하고난 뒤 Service를 주입할때 또 에러가 뜬다 ㅋㅋ 

그럼 service를 주입할때에도  이런식으로 forwardRef를 명시해준다.