작성
·
106
1
AuthModule과 UserModule을 PostModule에 추가하면 Dependency 에러가 해결되는 것은 이해가 됐습니다.
다른 질문이 생겼는데요.
그러면 해당 Guard를 사용하는 모든 Module에 해당 Guard가 DI 받아서 사용하는 (여기서는 AuthService와 UserService) 모듈 (AuthModule, UserModule)을 import 해주어야 하는 건가요?
만약 AccessTokenGuard 를 모든 controller에서 사용한다면, 모든 모듈에 AuthModule, UserModule을 import 해주어야 하는 걸까요?
그리고 만약 Guard에 DI 가 새로 추가된다면, (예를 들면 NewModule의 NewService를 Guard가 필요로 한다면)
다시 원래 Guard가 사용되고 있던 모듈들 전부에 NewModule을 import 해줘야하는 걸까요?
제가 이해한게 맞다면, 의존성 측면에서 매우 좋지 않은 것 같아, 의문이 생겨 문의드립니다.
답변 2
0
안녕하세요!
당연히 모두 임포트 해줘야합니다.
만약에 의존성을 한번에 묶고싶다면 모듈을 생성해서 관련 의존성들을 한번에 배포 해주시면 됩니다.
이렇게하면 두번째 질문하신 부분이 해결됩니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. Tempsh님 질문 감사합니다.
NestJS에서 Guard
를 사용하면서 의존성 문제에 대해 고민이 많으셨을 것 같습니다. 의존성 관리를 올바르게 하려면 어떻게 해야 할지 궁금하신 점, 아주 좋은 질문입니다.
Guard의 의존성 문제를 해결하기 위해 모든 컨트롤러의 모듈에 AuthModule
과 UserModule
을 일일이 import하는 것은 지금 말씀하신 대로 비효율적이고 유지보수에 좋지 않은 방법일 수 있습니다.
공유 모듈: 공통적인 Guard(s)와 서비스(s)를 묶어서 하나의 모듈로 추출할 수 있습니다. 이렇게 하면, 필요한 모듈만 import하면 되기 때문에 import 중복을 줄일 수 있습니다. 이를 통해 Guard가 필요로 하는 모든 의존성을 중앙 집중화하여 관리할 수 있습니다.
전역 모듈 사용: 일부 경우, 전역 모듈을 사용하여 문제를 해결할 수도 있습니다. 이 방식을 통해 한 번의 설정으로 모든 모듈에서 Guard를 사용할 수 있게 됩니다. 하지만 전역 모듈 사용은 장단점이 있어서 사용에 신중해야 합니다.
Custom Provider 사용: 의존성을 컴포지션한 커스텀 Provider를 정의하고, 이를 통해 주입할 수 있습니다. 이를 통해 Guard 내부에서 필요한 모든 의존성을 간편하게 주입받을 수 있습니다.
이 방법들은 프로젝트의 구조와 규모에 따라 적절히 선택되어야 하며, 의존성을 효율적으로 관리하는 데 도움을 줄 수 있습니다.
관련된 질문과 해결 방법들은 아래 링크에서도 확인하실 수 있습니다:
- 포스트 컨트롤러에서 UseGuard를 추가하면 디펜던시 에러가 나타납니다. - Dependency 문제와 해결에 대한 사례를 확인해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.