vuex接口请求无论失败或成功都会返回reject?

` Login({ commit }, userInfo) {

  console.log(commit, userInfo)

const username = userInfo.username.trim()

const password = userInfo.password

const code = userInfo.code

const uuid = userInfo.uuid

return new Promise((resolve, reject) => {

login(username, password, code, uuid).then(res => {

setToken(res.token)

commit('SET_TOKEN', res.token)

console.log('sucess')

resolve()

}).catch(error => {

console.log('error')

reject(error)

})

})

},`

// 登录方法

export function login(username, password, code, uuid) {

const data = {

username,

password,

code,

uuid

}

return request({

url: '/login',

method: 'post',

data: data

})

}

一直都是返到reject 请求成功后都没有返回resole
这是什么情况?
找不到什么原因
打印的error值
vuex接口请求无论失败或成功都会返回reject?

更新了一份request方法

import axios from 'axios'

import { Notification, MessageBox, Message } from 'element-ui'

import store from '@/store'

import { getToken } from '@/utils/auth'

import errorCode from '@/utils/errorCode'

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

// 创建axios实例

const service = axios.create({

// axios中请求配置有baseURL选项,表示请求URL公共部分

baseURL: process.env.VUE_APP_BASE_API,

// 超时

timeout: 10000

})

// request拦截器

service.interceptors.request.use(config => {

// 是否需要设置 token

const isToken = (config.headers || {}).isToken === false

if (getToken() && !isToken) {

config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改

}

// get请求映射params参数

if (config.method === 'get' && config.params) {

let url = config.url + '?';

for (const propName of Object.keys(config.params)) {

const value = config.params[propName];

var part = encodeURIComponent(propName) + "=";

if (value && typeof(value) !== "undefined") {

if (typeof value === 'object') {

for (const key of Object.keys(value)) {

let params = propName + '[' + key + ']';

var subPart = encodeURIComponent(params) + "=";

url += subPart + encodeURIComponent(value[key]) + "&";

}

} else {

url += part + encodeURIComponent(value) + "&";

}

}

}

url = url.slice(0, -1);

config.params = {};

config.url = url;

}

return config

}, error => {

console.log(error)

Promise.reject(error)

})

// 响应拦截器

service.interceptors.response.use(res => {

// 未设置状态码则默认成功状态

const code = res.data.code || 200;

// 获取错误信息

const msg = errorCode[code] || res.data.msg || errorCode['default']

if (code === 401) {

MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {

confirmButtonText: '重新登录',

cancelButtonText: '取消',

type: 'warning'

}

).then(() => {

store.dispatch('LogOut').then(() => {

location.href = '/index';

})

})

} else if (code === 500) {

Message({

message: msg,

type: 'error'

})

return Promise.reject(new Error(msg))

} else if (code !== 200) {

Notification.error({

title: msg

})

return Promise.reject('error')

} else {

return res.data

}

},

error => {

console.log('err' + error)

let { message } = error;

if (message == "Network Error") {

message = "后端接口连接异常";

}

else if (message.includes("timeout")) {

message = "系统接口请求超时";

}

else if (message.includes("Request failed with status code")) {

message = "系统接口" + message.substr(message.length - 3) + "异常";

}

Message({

message: message,

type: 'error',

duration: 5 * 1000

})

return Promise.reject(error)

}

)

export default service

回答

打印一下error

整个 Promise 里,只要有任何错误,都会进入 catch 里。

如果你确认 login() 执行正常,那你应该重点检查一下蓝框里的代码,可能是它们抛出了异常导致进入了 catch

vuex接口请求无论失败或成功都会返回reject?

你在axios response 拦截器那里 打印下 code , 看看是多少……

以上是 vuex接口请求无论失败或成功都会返回reject? 的全部内容, 来源链接: utcz.com/a/71532.html

回到顶部