From a72c8c89e33b7035b31f4af55131759a57622a22 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Fri, 7 Aug 2026 13:19:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=BA=A7detectEnv()=E9=81=BF=E5=85=8D=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E7=BD=91=E7=BB=9C=E6=8E=A2=E6=B5=8B=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- track-uniapp/src/utils/request.js | 57 +++---------------------------- 1 file changed, 5 insertions(+), 52 deletions(-) diff --git a/track-uniapp/src/utils/request.js b/track-uniapp/src/utils/request.js index 28f67e8..c6ba3f0 100644 --- a/track-uniapp/src/utils/request.js +++ b/track-uniapp/src/utils/request.js @@ -1,67 +1,20 @@ /** - * uni.request 封装 — 智能环境切换 + 双 Token 无感刷新 + 并发请求队列 + * uni.request 封装 — 双 Token 无感刷新 + 并发请求队列 * - * 🚀 自动检测:启动时 ping 本地服务器,可达则用本地,否则走生产。 - * 无需手动复制 request.local.js / request.prod.js。 + * 环境选择:优先读取 storage 中的 env_base_url, + * 未设置时默认走生产服务器。开发时如需切换,在登录前手动设置。 */ -const LOCAL_URL = "http://localhost:8011/api/v1"; -const LAN_URL = "http://192.168.9.80:8011/api/v1"; const PROD_URL = "http://172.16.0.198:8011/api/v1"; // ============================================================ -// 环境自动检测(仅首次启动时执行一次) +// 环境 URL // ============================================================ -let BASE_URL = uni.getStorageSync("env_base_url") || ""; -let envChecked = !!BASE_URL; - function getBaseUrl() { - if (!BASE_URL) BASE_URL = PROD_URL; // 兜底 - return BASE_URL; + return uni.getStorageSync("env_base_url") || PROD_URL; } -async function detectEnv() { - if (envChecked) return; - envChecked = true; - - // 并行 ping 两个服务器,谁先响应就用谁 - const probe = (url) => - new Promise((resolve) => { - const start = Date.now(); - uni.request({ - url: url + "/auth/login", - method: "POST", - data: { username: "_ping_", password: "_ping_" }, - timeout: 3000, - complete() { - resolve({ url, ms: Date.now() - start }); - }, - }); - }); - - const [localResult, lanResult, prodResult] = await Promise.all([ - probe(LOCAL_URL), - probe(LAN_URL), - probe(PROD_URL), - ]); - - // 优先级: localhost > 局域网IP > 生产 - if (localResult.ms < 3000) { - BASE_URL = LOCAL_URL; - } else if (lanResult.ms < 3000) { - BASE_URL = LAN_URL; - } else { - BASE_URL = PROD_URL; - } - uni.setStorageSync("env_base_url", BASE_URL); - console.log("[Env] 自动选择:", BASE_URL, - `(localhost ${localResult.ms}ms, 局域网 ${lanResult.ms}ms, 生产 ${prodResult.ms}ms)`); -} - -// App 启动时立即触发检测 -detectEnv(); - // ============================================================ // 双 Token 存储 // ============================================================