From 6949a08c1b5967d937a1942d23c43b7cf4fd8768 Mon Sep 17 00:00:00 2001 From: sheng <905537351@qq.com> Date: Thu, 25 Jun 2026 11:44:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85Workerman=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/workerman/index.js | 45 +++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/api/workerman/index.js b/src/api/workerman/index.js index a0efe3a5..fe613672 100644 --- a/src/api/workerman/index.js +++ b/src/api/workerman/index.js @@ -1,4 +1,5 @@ import axios from 'axios' +import { Message } from 'element-ui' const WORKERMAN_URL = process.env.VUE_APP_WORKERMAN_URL || 'http://127.0.0.1:34351' @@ -13,8 +14,50 @@ function normalizePayload (data = {}) { return data.sendData || data } +function readBusinessError (data) { + if (!data || typeof data !== 'object') return '' + const code = data.code ?? data.errcode + if (code === undefined || Number(code) === 0) return '' + return data.errmsg || data.msg || data.message || 'Workerman 接口返回失败' +} + +function buildRequestErrorMessage (error) { + if (error.response) { + return `Workerman 接口请求失败:HTTP ${error.response.status}` + } + if (error.code === 'ECONNABORTED') { + return `Workerman 接口请求超时,请确认 ${WORKERMAN_URL} 是否可访问` + } + if (error.request) { + return `Workerman 接口无响应,请确认浏览器可以访问 ${WORKERMAN_URL}` + } + return error.message || 'Workerman 接口请求失败' +} + export function sendWorkerman (data) { - return workerman.post(WORKERMAN_URL, normalizePayload(data)).then(response => response.data) + return workerman.post(WORKERMAN_URL, normalizePayload(data)).then(response => { + const result = response.data + const businessError = readBusinessError(result) + if (businessError) { + Message.error(businessError) + const error = new Error(businessError) + error.__workermanHandled = true + throw error + } + if (result === undefined || result === null || result === '') { + const message = 'Workerman 接口未返回有效数据' + Message.error(message) + const error = new Error(message) + error.__workermanHandled = true + throw error + } + return result + }).catch(error => { + if (error.__workermanHandled) throw error + const message = buildRequestErrorMessage(error) + Message.error(message) + throw error + }) } export function trayLogin (param) {