fix: 移除模块级detectEnv()避免启动时网络探测失败

This commit is contained in:
2026-08-07 13:19:11 +08:00
parent 0e5b2e42e9
commit a72c8c89e3

View File

@ -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 存储
// ============================================================