vue 封装axios Cannot read property 'interceptors' of undefined

用的vue-cli
import axios from 'axios'
import QS from 'qs';

axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/json';
axios.defaults.baseURL ='http://地址';

// request拦截器

axios.instance.interceptors.request.use(
config => {

console.log(config)
return config

},
error => {

return Promise.reject(error);

}
)
// respone拦截器
axios.instance.interceptors.response.use(
response => {

const resp = response.data
if (response.status === 200) {
  return resp
}
return resp

},
error => {

console.log('err' + error)
return Promise.reject(error)

}
)

/**

  • 封装get方法
  • @param url
  • @param data
  • @returns {Promise}

*/

export function fetch(url,params={}){
return new Promise((resolve,reject) => {

axios.get(url,{
  params:params
})
.then(response => {
  resolve(response.data);
})
.catch(err => {
  reject(err)
})

})
}

/**

  • 封装post请求
  • @param url
  • @param data
  • @returns {Promise}

*/

export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, QS.stringify(params))
.then(res => {

resolve(res.data);  

})
.catch(err => {

reject(err.data)  

})
});
}
然后在 main.js里
import { post,fetch } from './api/http.js'
//定义全局变量
Vue.prototype.$post=post;
Vue.prototype.$fetch=fetch;

就报错Cannot read property 'interceptors' of undefined
为啥呀 顺便问问 大佬 封装的时候 这个@param 是什么意思 谢谢

阅读 5.5k
1 个回答

axios.instance全改为axios
@param是注解,可以无视,除非有代码规范限制。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进