Next.js
[ERR]'AxiosHeaders | Partial<RawAxiosHeaders & MethodsHeaders & CommonHeaders>' 형식에 'Authorization' 속성이 없습니다.ts(7053)
Dev갱이
2023. 1. 16. 13:45
728x90
axios 1.2.2버전 이슈
instance.interceptors.request.use((config:AxiosRequestConfig) => {
const accessToken = Cookies.get('accessToken');
if (config.headers && accessToken) {
config.headers!['Authorization'] = `Bearer ${accessToken}`;
}
return config;
});
보통 이렇게 axios interceptors를 이용해서 config header에다가 accessToken을 넣어주는데 2022-01-16일자로 axios를 설치 하게 되면 1.2.2가 설치 되어서 원래 사용하던대로 사용하니까 에러가 발생했다. 아래에 axios 1.2.2에 대한 이슈를 보면 2주전부터 발생한걸로 보이며 1.2.1 버전에선 발생하지 않는것으로 보인다.
[해결방법1]
axios 버전은 1.2.1로 다운그레이드 한 뒤에 npm install로 다시 설치 하고 사용 하면 잘된다.
[해결방법2]
위처럼 쓰기는 싫으니까 코드를 수정.
import axios, { AxiosHeaders, AxiosRequestConfig } from 'axios';
...중략...
instance.interceptors.request.use((config:AxiosRequestConfig) => {
const accessToken = Cookies.get('accessToken'); //자신이 토큰 가져오는방식
if (config.headers && accessToken) {
config.headers = { ...config.headers } as AxiosHeaders;
config.headers.set('Authorization', accessToken);
}
return config;
});
err 발생함
TypeError:config.headers.set is not a function
import axios, { AxiosHeaders, AxiosRequestConfig } from 'axios';
...중략...
instance.interceptors.request.use((config:AxiosRequestConfig) => {
const accessToken = Cookies.get('accessToken'); //자신이 토큰 가져오는방식
(config.headers as AxiosHeaders).set(
'Authorization',
`Bearer ${accessToken}`,
);
return config;
});
이렇게 수정해줘야 잘됨.
해당 axios 이슈 https://github.com/axios/axios/issues/5416
Property 'Authorization' does not exists on type 'AxiosHeaders' after upgrade to 1.2.2 · Issue #5416 · axios/axios
Summary I'm getting the following error after upgrading axios to version 1.2.2: TS2339: Property 'Authorization' does not exist on type 'AxiosHeaders | Partial<RawAxiosHeaders &a...
github.com
728x90