에러 해결
[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)),
});