From 7ef27a41811d72011ea2de3eaa07795035a0a6b2 Mon Sep 17 00:00:00 2001 From: YeMingfei666 <1619116647@qq.com> Date: Wed, 12 Nov 2025 10:23:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=B7=E6=B1=82=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=A1=E6=81=AF=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.ts | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index dca818b..651dc5e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -12,6 +12,30 @@ const service = axios.create({ paramsSerializer: (params) => qs.stringify(params), }); +/** + * 格式化错误信息msg + */ +function formatErrorMsg(error: string) { + // 1. 获取原始提示文本(兜底空字符串避免报错) + const originMsg = error + // 2. 定义要匹配的前缀 + const exceptionPrefix = "Exception:"; + // 3. 判断是否包含目标前缀 + if (originMsg.includes(exceptionPrefix)) { + // 截取前缀后的内容 → 去除首尾空格 → 限制最大20个字符 + return originMsg + .slice( + originMsg.indexOf(exceptionPrefix) + + exceptionPrefix.length + ) + .trim() + .slice(0, 20); + } else { + // 不包含则按原逻辑截取前20个字符 + return originMsg.slice(0, 20); + } +} + // 请求拦截器 service.interceptors.request.use( (config: InternalAxiosRequestConfig) => { @@ -66,10 +90,11 @@ service.interceptors.response.use( }); return; } - ElMessage.error(msg || "系统出错"); - return Promise.reject(new Error(msg || "Error")); + ElMessage.error(formatErrorMsg(msg || "Error")); + return Promise.reject(new Error(formatErrorMsg(msg || "Error"))); }, async (error: any) => { + // 非 2xx 状态码处理 401、403、500 等 const { config, response } = error; if (response) {