From 09847ce074a1638c31cac1770ee6f516e8b14440 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Oct 2024 18:46:29 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E5=85=81=E8=AE=B8=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E8=87=AA=E7=AD=BE=E8=AF=81=E4=B9=A6=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/basic/src/utils/util.request.ts | 13 +++++++++---- packages/ui/certd-client/package.json | 5 ++++- packages/ui/certd-client/src/api/service.ts | 6 ++++-- packages/ui/certd-client/src/api/tools.ts | 15 ++++++++++----- .../components/plugins/common/remote-select.vue | 5 +++-- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/packages/core/basic/src/utils/util.request.ts b/packages/core/basic/src/utils/util.request.ts index db9bd67b..1167f885 100644 --- a/packages/core/basic/src/utils/util.request.ts +++ b/packages/core/basic/src/utils/util.request.ts @@ -5,6 +5,7 @@ import { HttpProxyAgent } from 'http-proxy-agent'; import { HttpsProxyAgent } from 'https-proxy-agent'; import nodeHttp from 'http'; import * as https from 'node:https'; +import { merge } from 'lodash-es'; export class HttpError extends Error { status?: number; statusText?: string; @@ -40,7 +41,7 @@ export class HttpError extends Error { url = error.config?.baseURL + url; } if (url) { - this.message = `${this.message} : ${url}`; + this.message = `${this.message} : url=${url}`; } this.response = { @@ -99,6 +100,11 @@ export function createAxiosService({ logger }: { logger: Logger }) { delete config.skipSslVerify; config.httpsAgent = agents.httpsAgent; config.httpAgent = agents.httpAgent; + + // const agent = new https.Agent({ + // rejectUnauthorized: false // 允许自签名证书 + // }); + // config.httpsAgent = agent; config.proxy = false; //必须 否则还会走一层代理, return config; }, @@ -161,9 +167,6 @@ export function createAxiosService({ logger }: { logger: Logger }) { `请求出错:status:${error.response?.status},statusText:${error.response?.statusText},url:${error.config?.url},method:${error.config?.method}。` ); logger.error('返回数据:', JSON.stringify(error.response?.data)); - if (error?.config?.logRes !== false) { - logger.error('返回数据:', JSON.stringify(error.response?.data)); - } if (error.response?.data) { error.message = error.response.data.message || error.response.data.msg || error.response.data.error || error.response.data; } @@ -195,6 +198,7 @@ export function createAgent(opts: nodeHttp.AgentOptions = {}) { if (httpProxy) { logger.info('use httpProxy:', httpProxy); httpAgent = new HttpProxyAgent(httpProxy, opts as any); + merge(httpAgent.options, opts); } else { httpAgent = new nodeHttp.Agent(opts); } @@ -202,6 +206,7 @@ export function createAgent(opts: nodeHttp.AgentOptions = {}) { if (httpsProxy) { logger.info('use httpsProxy:', httpsProxy); httpsAgent = new HttpsProxyAgent(httpsProxy, opts as any); + merge(httpsAgent.options, opts); } else { httpsAgent = new https.Agent(opts); } diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index 815afe0e..8dd8280c 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -11,6 +11,7 @@ "debug:force": "vite --force --mode debug", "build": " vite build ", "dev-build": "echo 1", + "test:unit": "vitest", "serve": "vite preview", "preview": "vite preview", "pretty-quick": "pretty-quick", @@ -114,7 +115,9 @@ "vite-plugin-html": "^3.2.2", "vite-plugin-windicss": "^1.9.3", "vue-eslint-parser": "^9.4.2", - "vue-tsc": "^1.8.8" + "vue-tsc": "^1.8.8", + "@vue/test-utils": "^2.4.6", + "vitest": "^2.1.2" }, "husky": { "hooks": { diff --git a/packages/ui/certd-client/src/api/service.ts b/packages/ui/certd-client/src/api/service.ts index b5285cf2..0a7c91b2 100644 --- a/packages/ui/certd-client/src/api/service.ts +++ b/packages/ui/certd-client/src/api/service.ts @@ -53,7 +53,9 @@ function createService() { // @ts-ignore response.config.onError(new Error(errorMessage)); } - errorCreate(`${errorMessage}: ${response.config.url}`); + //@ts-ignore + const showErrorNotify = response?.config?.showErrorNotify; + errorCreate(`${errorMessage}: ${response.config.url}`, showErrorNotify); return dataAxios; } } @@ -97,7 +99,7 @@ function createService() { default: break; } - errorLog(error); + errorLog(error, error?.response?.config?.showErrorNotify); if (status === 401) { const userStore = useUserStore(); userStore.logout(); diff --git a/packages/ui/certd-client/src/api/tools.ts b/packages/ui/certd-client/src/api/tools.ts index f389e203..08d80890 100644 --- a/packages/ui/certd-client/src/api/tools.ts +++ b/packages/ui/certd-client/src/api/tools.ts @@ -48,7 +48,7 @@ export function responseError(data = {}, msg = "请求失败", code = 500) { * @description 记录和显示错误 * @param {Error} error 错误对象 */ -export function errorLog(error: any) { +export function errorLog(error: any, notify = true) { // 打印到控制台 console.error("errorLog", error); let message = error.message; @@ -58,17 +58,22 @@ export function errorLog(error: any) { if (message.indexOf("ssl3_get_record:wrong version number") >= 0) { message = "http协议错误,服务端要求http协议,请检查是否使用了https请求"; } - // 显示提示 - uiContext.get().notification.error({ message }); + if (notify) { + // 显示提示 + uiContext.get().notification.error({ message }); + } } /** * @description 创建一个错误 * @param {String} msg 错误信息 */ -export function errorCreate(msg: string) { +export function errorCreate(msg: string, notify = true) { const err = new Error(msg); console.error("errorCreate", err); - uiContext.get().notification.error({ message: err.message }); + if (notify) { + uiContext.get().notification.error({ message: err.message }); + } + throw err; } diff --git a/packages/ui/certd-client/src/components/plugins/common/remote-select.vue b/packages/ui/certd-client/src/components/plugins/common/remote-select.vue index 3ea47918..360ec6ea 100644 --- a/packages/ui/certd-client/src/components/plugins/common/remote-select.vue +++ b/packages/ui/certd-client/src/components/plugins/common/remote-select.vue @@ -43,6 +43,7 @@ const attrs = useAttrs(); const optionsRef = ref([]); const message = ref(""); const getOptions = async () => { + message.value = ""; const res = await doRequest( { type: props.type, @@ -53,10 +54,10 @@ const getOptions = async () => { { onError(err: any) { message.value = `获取选项出错:${err.message}`; - } + }, + showErrorNotify: false } ); - message.value = ""; return res; };