인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ssavengers님의 프로필 이미지

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

토큰 재발급 로직 코딩하기

jwtService.verify() 사용 시 ESLint 관련 경고가 발생합니다

작성

·

48

0

코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!

[코드팩토리 디스코드]
https://inf.run/54jjz

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요

rotateToken(token: string, isRefreshToken: boolean) {
    const decoded = this.jwtService.verify(token, {
      secret: JWT_SECRET,
    });

여기를 비롯해서 다양한곳에서

Unsafe assignment of an any value라는 오류가 뜨는데 강사님 영상에서는 따로 이런 에러가 발생하지 않더라고요. 혹시 강의에서 ESLint 설정을 약하게 해두신 건가요? 아니면 verify 결과에 타입을 명시해줘야 하는 건가요?

 

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

따로 추가로 설정해둔 부분은 없습니다.

제 레포지토리 lint 설정과 비교했을때 다르게 설정 돼있으신가요?

추가로 이전 질문에 답변 드린 것 처럼 TS 서버 재시작 확인 부탁드립니다.

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. ssavengers님.

JWT와 관련한 ESLint 경고 메시지와 관련하여 해결 방법에 대해 설명드리겠습니다.

ESLint에서 Unsafe assignment of an 'any' value라는 오류는 TypeScript가 타입 검사를 제대로 수행할 수 없는 경우 발생하는 경고입니다. 이는 jwtService.verify 메서드가 any 타입을 반환하고 있기 때문입니다. 즉, 타입이 불명확하다 보니 안전하지 않은 할당 경고가 발생하는 것입니다.

여기에서 해결 방법은 두 가지가 있습니다:

  1. 타입 확장 또는 명시: jwtService.verify의 반환 값을 지정된 타입으로 할당하세요. 이는 TypeScript에게 반환 값의 타입을 명확히 알려 오류를 방지합니다. 예를 들어, 반환되는 객체의 구조를 알고 있다면 명시할 수 있습니다.

    interface JwtPayload {
      email: string;
      sub: string;
      type: string;
    }
    
    
    rotateToken(token: string, isRefreshToken: boolean) {
      const decoded = this.jwtService.verify<JwtPayload>(token, {
        secret: JWT_SECRET,
      });
    }
    
  2. ESLint 룰 조정: 프로젝트의 ESLint 설정 파일에서 해당 경고를 비활성화하거나 완화할 수 있습니다. 하지만 이는 타입의 명확성을 해치는 방식이므로 권장되지 않습니다.

강의에서 ESLint를 특별히 약하게 설정했는지는 강의를 직접 확인해야 하지만, 일반적으로 타입스크립트와 ESLint를 함께 사용하는 경우 반환 타입을 명시하는 것이 좋은 습관입니다.

아래 URL에서 비슷한 토론을 참고하시기 바랍니다:
- jwtService.verify() 사용 시 타입 명시 문제

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.