老师,通过封装axios请求,网络查看请求成功,但是却没有返回data,而是走到非200和非40001的逻辑来了,这个是哪里问题呢?
来源:2-10 axios二次封装(下)
qq_阳光男孩_15
2022-03-17

config的js如下:
// 环境配置封装
const env = import.meta.env.MODE || 'prod'
const EnvConfig = {
dev: {
baseApi: '/api',
mockApi: 'https://www.fastmock.site/mock/b0a220ea6df5a79fc0573243c45162a0/api'
},
test: {
baseApi: '/api',
mockApi: 'https://www.fastmock.site/mock/b0a220ea6df5a79fc0573243c45162a0/api'
},
prod: {
baseApi: '/api',
mockApi: 'https://www.fastmock.site/mock/b0a220ea6df5a79fc0573243c45162a0/api'
}
}
export default {
env,
mock: true,
...EnvConfig[env]
}request的js如下:
/**
* axios 二次封装
*/
import axios from 'axios'
import config from './../config'
import router from './../router'
import {ElMessage} from 'element-plus'
const TOKEN_INVALID = 'Token认证失败,请重新登录'
const NETWORK_ERROR = '网络请求异常,请稍后重试'
// 创建axios实例对象,添加全局配置
const service = axios.create({
baseURL: config.baseApi,
timeout: 8000
})
// 请求拦截
service.interceptors.request.use((req) => {
// To-Do
const headers = req.headers
if(!headers.Authorization) headers.Authorization = 'Bear Jack'
return req
})
// 响应拦截
service.interceptors.response.use((res) => {
const { code, data, msg } = res.data
if(code === 200) {
return data
}else if(code === 40001){
ElMessage.error(TOKEN_INVALID)
setTimeout(()=>{
router.push('/login')
}, 1500)
return Promise.reject(TOKEN_INVALID)
}else {
ElMessage.error(msg || NETWORK_ERROR)
return Promise.reject(msg || NETWORK_ERROR)
}
})
/**
* 请求核心函数
* @param {*} options 请求配置
*/
function request(options) {
options.method = options.method || 'get'
if(options.method.toLowerCase() === 'get') {
options.params = options.data
}
if(config.env === 'prod') {
service.defaults.baseURL = config.baseApi
}else {
service.defaults.baseURL = config.mock ? config.mockApi : config.baseApi
}
return service(options)
}
export default request写回答
1回答
-
qq_阳光男孩_15
提问者
2022-03-17
老师后面有解答,心急了;debugger定位问题是真的好用!
00
相似问题