Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue.js2。如何在axios拦截器中使用Vuex_Javascript_Vue.js_Axios_Vuex_Es6 Modules - Fatal编程技术网

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看起来两者都一样,但问题是,我根本没有存储。它是
未定义的