Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- presignedurl
- 방송대컴퓨터과학과
- MySQL
- 코드잇
- 꿀단집
- HTML
- Python
- 데이터베이스시스템
- 유노코딩
- aws
- JavaScript
- 프로그래머스
- 99클럽
- 코딩테스트준비
- 개발자취업
- nestjs
- 항해99
- 방송대
- 엘리스sw트랙
- 파이썬프로그래밍기초
- 중간이들
- redis
- CSS
- TiL
- 코딩테스트
- node.js
- Cookie
- 파이썬
- SQL
- Git
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
[NestJS] @Inject 데코레이터를 사용할 때는 provide할 때 사용한 이름으로 주입받아야 함 본문
BackEnd/Express / NestJS
[NestJS] @Inject 데코레이터를 사용할 때는 provide할 때 사용한 이름으로 주입받아야 함
꼽파 2024. 8. 26. 17:02NestJS는 모듈 기반 아키텍처를 사용하는 프레임워크이다. import와 export만 제대로 해주면 되는 express와는 다르다.
이로 인해 의존성 주입(Dependency Injection)과 모듈 간의 관계 설정이 정말 중요하다.
그래서 아래와 같은 깜찍발랄한 오류들을 자주 만날 수 있다.
[Nest] 7816 - 2024. 08. 26. 오후 4:47:41 ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthSessionService (?). Please make sure that the argument Redis at index [0] is available in the AuthModule context.
Potential solutions:
- Is AuthModule a valid NestJS module?
- If Redis is a provider, is it part of the current AuthModule?
- If Redis is exported from a separate @Module, is that module imported within AuthModule?
@Module({
imports: [ /* the Module containing Redis */ ]
})
오류 메시지에서 AuthSessionService가 Redis 의존성을 해결하지 못한다고 하는 것은, AuthSessionService에서 필요로 하는 Redis 프로바이더가 AuthModule에서 올바르게 주입되지 않았다는 뜻이다.
무슨 말인지 모르겠어도 눈에 들어오는 파일이 AuthModule, RedisModule, AuthSessionService니까 서로 제대로 주입이 되었는지 순서대로 찾아가면서 확인하면 된다.
나의 경우에는 아래가 문제였다.
현재 Redis 모듈에서 'REDIS_CLIENT'라는 문자열을 사용하여 Redis Client를 제공하고 있다.
이걸 이런식으로 주입하니 NestJS가 'Redis' 타입의 출처를 찾지 못하였다.
private readonly redisClient: Redis
그래서 @Inject('REDIS_CLIENT')를 통해 명시적으로 주입을 해주었다.
constructor(
@Inject('REDIS_CLIENT') private readonly redisClient: Redis
) {}
@Inject()가 없어도 컴파일 에러는 발생하지 않는데, 서버를 실행하면 에러가 났다.
결론은 provide를 할 때 지정한 문자열로, 다른 곳에서 inject를 하여야 한다는 말이다.
728x90
'BackEnd > Express / NestJS' 카테고리의 다른 글
[NestJS] NestJS @Res() 데코레이터를 사용할 때 응답 처리를 직접 제어해야함 (0) | 2024.09.13 |
---|---|
[NestJS] ejs 템플릿엔진 nodemailer로 발송시 CSS 미적용 오류 해결 (0) | 2024.08.30 |
[NestJS] service 클래스 내에서의 함수 분리의 중요성 (0) | 2024.08.26 |
[NestJS] Express의 Request 타입을 전역적으로 사용하는 방법 (0) | 2024.08.26 |
[NestJS] res.cookie를 사용하기 위해 Express의 Response를 import 해야함 (0) | 2024.08.26 |