에러 해결

[Cookies] attributes.expires.toUTCString is not a function

눙엉 2022. 4. 14. 16:21

Cookies.set을 하는 도중에 해당 에러를 만났다

 

const parseJwt = (token) => {
      const base64Url = token.split(".")[1];
      const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
      const jsonPayload = decodeURIComponent(
        atob(base64)
          .split("")
          .map(function (c) {
            return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
          })
          .join(""),
      );

      return JSON.parse(jsonPayload).expires_in;
 };
    
    
     Cookies.set("refreshToken", res.data.refreshtoken, {
        expires: parseJwt(res.data.refreshtoken),
      });

 

Cookies.set()에는 총 3개의 인자가 들어간다.

 

Cookies(name, value, options)

3가지 인자들의 타입은 name: string, value: string, options: object이다.

여기서 name, value는 필수 값이고 options은 말 그대로 옵셔널 한 값으로 넣어도 되고 안 넣어도 된다.

 

options안에 들어가는 값으로 expires, path, domain, secure, sameSite 가 있다.

 

Cookies의 만료기한 설정을 위해 expires를 사용했다.

expires에 들어갈 수 있는 타입은 number, Date, undefined가 가능하다.

 

그래서 아래의 코드와 같이 수정 수 에러 없이 사용 할 수 있었다.

 Cookies.set("refreshToken", res.data.refreshtoken, {
        expires: new Date(parseJwt(res.data.refreshtoken)),
      });