Typescript 导入自定义axios实例时Vuex模块不工作
我已在Vuex模块中声明了一个操作:Typescript 导入自定义axios实例时Vuex模块不工作,typescript,vue.js,axios,vuex,Typescript,Vue.js,Axios,Vuex,我已在Vuex模块中声明了一个操作: storeBudgets(store: ActionContext<State, any>) { return axiosAuth.get('/budget') .then((res) => { store.commit('setBudgets', res.data.budgets); }); } 我在其他vuex store模块中使用此axios实例时没有任何问题,但对于此
storeBudgets(store: ActionContext<State, any>) {
return axiosAuth.get('/budget')
.then((res) => {
store.commit('setBudgets', res.data.budgets);
});
}
我在其他vuex store模块中使用此axios实例时没有任何问题,但对于此特定模块中的此特定操作,我遇到以下错误:
TypeError: rawModule is undefined
只要我对axiosAuth的引用进行注释,错误就会消失
我认为这个问题与我引用axios拦截器中的存储有关,因为同时注释config.headers
行会使应用程序加载没有任何问题
我正在从TypeScript代码库中的一个JavaScript项目迁移此逻辑,并且以前的实现没有任何问题
- 这与打字脚本传输有关吗
- 我可以使用哪些替代方法来代替拦截器在HTTP请求的头中设置JWT令牌
store.ts
文件中移动了axios拦截器的设置
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;
我不确定这是否是可能的最干净的解决方案,但我很高兴它解决了我的主要问题。其余的错误在哪里?您试图在何处使用
rawModule
?@Phil这就是错误所在,而rawModule是Vuex/Vuejs代码的内部部分。做得好,解决这个问题的基本原理是将引用存储的任何代码片段放在store.ts本身中。我再次感到可能有一个更干净的解决办法somewhere@ExisZhang你找到清洁剂了吗?
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;