jwt 생성 불가 오류

Lee·2023년 2월 20일
0

사이드프로젝트

목록 보기
2/3

발생한 문제

jwt service에서 sign 메서드 사용시 에러 발생

// JwtAdapter.ts
this.jwtService.sign(payload);

에러 메세지: Expected "payload" to be a plain object.

문제 원인

// @nestjs/jwt
sign(payload: string | Buffer | object, options?: JwtSignOptions): string;

위 코드에 나온 것처럼 sign 메서드는 string, buffer, object를 입력으로 받는다.
그런데 프로젝트를 class 기반 코드를 작성하다보니 클래스의 인스턴스를 입력으로 집어넣었기 때문에 에러가 발생했다.

해결 방법

Payload 클래스에 instanceToPlain 메서드를 새로 만들어 객체 리터럴로 변경하여 input으로 사용

// Payload.ts
export class Payload {
  
  ...

  public instanceToPlain() {
    // class-transformer 제공 메서드 사용
    return instanceToPlain(this);
  }
}

// JwtAdapter.ts
this.jwtService.sign(payload.instanceToPlain());
profile
발전하고 싶은 백엔드 개발자

0개의 댓글