develop 반영 중 build 에러 (ManipulateType | undefined )

flobeeee·2022년 5월 12일
0

시행착오

목록 보기
38/45
post-custom-banner

에러메시지

 Argument of type 'string | undefined' is not assignable to parameter of type 'ManipulateType | undefined'.

상황

hotfix를 하고 develop에 반영을 했는데, 내가 수정한 부분이 아닌 곳에서 에러가 났다.
확인해보니 타입에러였다.

해당 부분은 로그인때 토큰옵션을 주는 부분이었는데 'day' 들어가는 부분에 타입에러가 났다.

// 예제
dayjs().add(7, 'day')

// 실제코드
expiresAt: dayjs()
  .add(Number(process.env.JWT_EXPIRES_IN_TIME), process.env.JWT_EXPIRES_IN_UNIT)

시행착오 1 (실패)

expiresAt: dayjs()
  .add(Number(process.env.JWT_EXPIRES_IN_TIME), process.env.JWT_EXPIRES_IN_UNIT || 'JWT_EXPIRES_IN_UNIT')

그냥 기본값으로 string 타입의 데이터를 넣어줬다.

시행착오 2 (실패)

expiresAt: dayjs()
  .add(Number(process.env.JWT_EXPIRES_IN_TIME), process.env.JWT_EXPIRES_IN_UNIT!)

스택오버플로우를 참고해서 수정해봤다.

시행착오 3 (실패)

expiresAt: dayjs()
  .add(Number(process.env.JWT_EXPIRES_IN_TIME), process.env.JWT_EXPIRES_IN_UNIT || undefined)

타입때문에 답답해서 undefined를 넣어봤다.

시행착오 4 (실패)

expiresAt: dayjs()
  .add(Number(process.env.JWT_EXPIRES_IN_TIME), process.env.JWT_EXPIRES_IN_UNIT || 'day')

ManipulateType 을 타고 들어가서 어떤 값을 받는지 확인해서 넣어봤다.

시행착오 5 (성공)

expiresAt: dayjs()
   .add(Number(process.env.JWT_EXPIRES_IN_TIME), Env.get('JWT_EXPIRES_IN_UNIT', 'day'))

팀원분의 조언으로 adonis 공식문서를 참고해 애초에 env에서 데이터 가져오는 코드를 바꿨다.
어떻게 해결방법을 생각해내셨냐고 여쭤보니, 감이라고 하셨다.. ㅎ

type이 문제라면 any타입으로 처리하면 되지 않을까? 라고 생각하셨다고 했다.

큰 도움이 되었다.

https://docs.adonisjs.com/guides/environment-variables#document

profile
기록하는 백엔드 개발자
post-custom-banner

0개의 댓글