ํ์ฌ ํ๋ก์ ํธ์์ jwt๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ axios interceptor๋ฅผ ์ด์ฉํด์ ํ ํฐ์ ๋ฐ๋ผ request ํค๋ ์ค์ ์ ํด์ฃผ์ด์ผํ๋ค.
์๋์ ๊ฐ์ด interceptor๋ฅผ ์ค์ ํ์๋ค.
axios.interceptors.request.use((request) => {
request.headers
? (request.headers.Authorization = `Bearer ${token}`)
: (request.headers = { Authorization: `Bearer ${token}` });
});
// ๋๋
axios.interceptors.request.use((request) => {
if (request.headers) {
request.headers.Authorization = `Bearer ${token}`
}
});
Bearer ํ ํฐ ๊ฐ์ผ๋ก ํค๋๋ฅผ ์ค์ ํ๋ ๋ถ๋ถ์ธ config.headers.Authorization์์ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
TS2339: Property 'Authorization' does not exist on type 'AxiosHeaders | Partial<RawAxiosHeaders & MethodsHeaders & CommonHeaders>'. Property 'Authorization' does not exist on type 'AxiosHeaders'.
axios 1.2.2 ๋ฒ์ ์ ๋ฒ๊ทธ๋ก headers ํ์ ์ด ๊นจ์ง ๋ฒ๊ทธ ํ์์ด์๋ค.
https://github.com/axios/axios/issues/5416
๋ต๋ณ ๋ด์ฉ์ ๋ฐ๋ฅด๋ฉด ํ์ฌ axios 1.2.3 ๋ฒ์ ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
1.2.3 ๋ฒ์ ์์๋
- AxiosRequestConfig → RawAxiosRequestConfig ์ธํฐํ์ด์ค๋ก ๋ณ๊ฒฝํ์๊ณ
- AxiosRequestConfig๋ฅผ RawAxiosRequestConfig์ ์๋ธ์ธํฐํ์ด์ค๋ก ์ถ๊ฐํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์๋ axios ๋ฒ์ ์ 1.2.2 ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ 1.2.3์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ๋ ค๊ณ ํ์ผ๋
ํ์ฌ ๊ธ ์์ฑ์ผ ๊ธฐ์ค์ผ๋ก๋ npm์๋ 1.2.2. ๋ฒ์ ๋ง ์กด์ฌํ๋ค.
(axios ๊นํ๋ธ์๋ 1.2.3 ๋ฒ์ ์ด ๋ถ๋ช
๋ฆด๋ฆฌ์ฆ ๋์๋๋ฐ .. )
ํด๊ฒฐ
์์ ํด๊ฒฐ์ฑ ์ผ๋ก๋ headers์ ํ์ ์ AxiosHeader๋ก ์ค์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
config.headers = { ...config.headers } as AxiosHeaders;
config.headers.set('Authorization', `Bearer ${token}`);
๋๋ ์๋์ ๊ฐ์ด ํด๊ฒฐํ ์ ์๋ค.
const headers = { ...config.headers } as Partial<AxiosRequestHeaders>;
headers['Authorization'] = `Bearer ${token}`;
์ฐธ๊ณ
- https://github.com/axios/axios/pull/5420
'๐ฉโ๐ค ํ๋ก ํธ์๋ > typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[typescript] ๋์ ์ผ๋ก ํค๊ฐ ์ถ๊ฐ๋๋ ๊ฐ์ฒด์ ํ์ ์ง์ ํ๊ธฐ (0) | 2023.01.17 |
---|---|
TS2339: Property 'reset' does not exist on type 'EventTarget'. (0) | 2023.01.10 |