【发布时间】:2018-12-04 18:30:53
【问题描述】:
我已经在 Vuex 模块中声明了一个动作:
storeBudgets(store: ActionContext<State, any>) {
return axiosAuth.get('/budget')
.then((res) => {
store.commit('setBudgets', res.data.budgets);
});
}
其中 axiosAuth 是 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
一旦我评论了对 axiosAuth 的引用,错误就会消失。
我认为这个问题与我在 axios 拦截器中引用存储的事实有关,因为还注释 config.headers 行会使应用程序加载没有任何问题。
我正在从 TypeScript 代码库中的 JavaScript 项目中迁移此逻辑,并且之前的实现没有任何问题。
- 这与 TypeScript 转译有关吗?
- 我可以使用哪些替代方法而不是拦截器来在我的 HTTP 请求的标头中设置 JWT 令牌?
【问题讨论】:
-
其余的错误在哪里?你在哪里尝试使用
rawModule? -
@Phil 是错误,而 rawModule 是 Vuex/Vuejs 代码内部的东西。
标签: typescript vue.js axios vuex