Javascript Vue.js2。如何在axios拦截器中使用Vuex
我有一个拦截器,我想在其中使用Javascript Vue.js2。如何在axios拦截器中使用Vuex,javascript,vue.js,axios,vuex,es6-modules,Javascript,Vue.js,Axios,Vuex,Es6 Modules,我有一个拦截器,我想在其中使用Vuex获取程序,但是,当我导入存储时,我会收到未定义的 这是我的src/plugins/http.jscode: import Vue from 'vue' import store from '../store' import axios from 'axios' axios.interceptors.request.use( (config) => { if (store.getters['auth/hasAccessToke
Vuex
获取程序,但是,当我导入存储时,我会收到未定义的
这是我的src/plugins/http.js
code:
import Vue from 'vue'
import store from '../store'
import axios from 'axios'
axios.interceptors.request.use(
(config) => {
if (store.getters['auth/hasAccessToken']) {
config.headers['Authorization'] = 'Bearer ' + store.getters['auth/accessToken']
}
}
);
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export default new Vuex.Store({
//...
});
这是我的src/store/index.js
代码:
import Vue from 'vue'
import store from '../store'
import axios from 'axios'
axios.interceptors.request.use(
(config) => {
if (store.getters['auth/hasAccessToken']) {
config.headers['Authorization'] = 'Bearer ' + store.getters['auth/accessToken']
}
}
);
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export default new Vuex.Store({
//...
});
从“../store”导入存储
也没有帮助。我知道,我已经尝试了几乎所有的进口方式。没什么帮助
我错过了什么?看起来您正在使用模块来命名getter的名称空间。要找出问题所在,为什么不先尝试在没有模块的情况下执行此操作,如在store.getters.hasAccessToken
和…accessToken
中。如果这样做有效,那么可能是您正确设置了模块,特别是您可能错过了模块中的namespaced:true
。见:
别忘了在拦截器中返回config对象
值得一提的是,我使用了类似的东西,没有模块也可以正常工作。看起来像这样:
import axios from 'axios'
import store from '../store'
export default class BaseDataService {
constructor () {
this.http = axios.create({baseURL: '/api/'})
this.http.interceptors.request.use(config => {
config.headers.Authorization = 'Bearer ' + store.state.principal.token
return config
})
}
}
您的存储在拦截器回调之外还是仅在回调中未定义?@Lunfel看起来两者都一样,但问题是,我根本没有存储。它是未定义的
。