vuex - axios Cannot read property 'cancelToken' of undefined

查看:4209
本文介绍了vuex - axios Cannot read property 'cancelToken' of undefined的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在vue2.0中使用axios向后台请求数据

全局配置axios, /src/apis/index.js

import axios from 'axios';
import qs from 'qs';

axios.defaults.baseURL = 'http://usergroup.laile.com/api_group/v1/';
axios.defaults.timeout = 5000;

axios.interceptors.request.use((config) => {
  if(config.method === 'post') {
    config.data = qs.stringify(config.data);
  }
}, (error) => {
  return Promise.reject(error);
});

axios.interceptors.response.use((res) => {
  if(!res.data.success) {
    return Promise.reject(res);
  }
  return res;
}, (error) => {
  return Promise.reject(error);
});

export default axios;

/src/apis/mountedUsers.js 某个页面的接口文件

import axios from './index';
export default {
  getCities() {
    return axios.get(`/city/opened-list`);
  }
}

/src/store/modules/mountedUsers.js

import api from '../../apis/mountedUsers'
import * as types from '../types'
const state = {
  cities: []
}
const getters = {
  cities: state => state.cities
}
const actions = {
  getCities({ commit }) {
    api.getCities().then(res => {
      commit(types.GET_CITIES, res.data)
    });
  }
}
const mutations = {
  [types.GET_CITIES](state, cities) {
    state.cities = cities;
  }
}
export default {
  state,
  getters,
  actions,
  mutations
}

入口文件 main.js

import Vue from 'vue';
import App from './App';
import router from './router';
import store from './store/index';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-default/index.css';    // 默认主题
import '../static/css/pzq.css';  
import "babel-polyfill";
Vue.use(ElementUI);
Vue.config.devtools = true;
new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app');

当我在页面中发送this.$store.dispatch('getCities')的时候,报Uncaught (in promise) TypeError: Cannot read property 'cancelToken' of undefined,请问是什么原因呢?

解决方案

/src/apis/index.js

axios.interceptors.request.use((config) => {
  if(config.method === 'post') {
    config.data = qs.stringify(config.data);
  }
  return config;  //添加这一行
}, (error) => {
  return Promise.reject(error);
});

这篇关于vuex - axios Cannot read property 'cancelToken' of undefined的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆