사용자 지정 Axios 인스턴스를 가져올 때 Vuex 모듈이 작동하지 않음
Vuex 모듈에서 액션을 선언했습니다.
storeBudgets(store: ActionContext<State, any>) {
return axiosAuth.get('/budget')
.then((res) => {
store.commit('setBudgets', res.data.budgets);
});
}
여기서 axios는Auth는 Axios의 커스텀인스턴스입니다
import axios from 'axios';
import store from './store/index';
const axiosAuth = axios.create({
baseURL: 'http://localhost:3000',
});
axiosAuth.interceptors.request.use((config) => {
config.headers['x-access-token'] = store.getters.getUserToken;
return config;
});
export default axiosAuth;
다른 vuex 스토어 모듈에서 문제없이 이 Axios 인스턴스를 사용하고 있는데 이 특정 모듈의 이 특정 액션에 대해 다음 오류가 발생합니다.
TypeError: rawModule is undefined
공리에 대한 언급을 하자마자 오류가 사라집니다.인증.
이 문제는 악시오스 인터셉터에 있는 스토어를 참조하고 있다는 사실과 관련이 있다고 생각합니다.왜냐하면 이 스토어에 대한 코멘트도 있기 때문입니다.config.headers
line을 사용하면 어플리케이션이 문제없이 로딩됩니다.
이 로직은 TypeScript 코드베이스의 JavaScript 프로젝트에서 이행하고 있으며 이전 구현에서는 문제가 없었습니다.
- 이것은 TypeScript 전사와 관련된 것입니까?
- 인터셉터 대신 어떤 대안을 사용하여 HTTP 요청 헤더에 JWT 토큰을 설정할 수 있습니까?
여기서의 문제는 TypeScript가 의존관계의 Import를 전위화하려고 하는 방법이라고 생각합니다.
추측하고 있습니다만, 악시오스 파일에 있는 스토어와 vuex 스토어 모듈 중 하나에 있는 악시오에 대한 참조가 있었습니다.이로 인해 일종의 순환 참조 루프가 생성되어 오류가 발생할 수 있습니다.
이 문제를 해결하기 위해 vuex 스토어가 생성된 후 Axios 인터셉터 설정을 이동했습니다.store.ts
파일.
import Vue from 'vue';
import Vuex from 'vuex';
import axiosAuth from "@/axios-auth";
Vue.use(Vuex);
const vuexStore = new Vuex.Store({
state: {
},
modules: {
// ...
},
});
axiosAuth.interceptors.request.use((config) => {
config.headers['x-access-token'] = vuexStore.getters.getUserToken;
return config;
});
export default vuexStore;
이것이 가장 깨끗한 해결책인지는 모르겠지만, 그것이 나의 주된 문제를 해결했기 때문에 저는 매우 기쁩니다.
언급URL : https://stackoverflow.com/questions/51036048/vuex-module-not-working-when-importing-a-custom-axios-instance
'programing' 카테고리의 다른 글
Nvidia GPU에서 Java 사용(CUDA) (0) | 2022.08.09 |
---|---|
여러 .so 공유 라이브러리 병합 (0) | 2022.08.09 |
vuejs 2의 메서드 내에서 뒤로 버튼을 처리할 수 있습니까? (0) | 2022.08.09 |
Vuex 스토리지의 데이터가 vue 구성 요소에 표시되지 않음 (0) | 2022.08.09 |
변수 유형 선언 방법 Python C style (0) | 2022.08.08 |