Blame view

稻城亚丁小程序/uniapp/src/config/api.ts 1.63 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  /** H5 开发构建下由 vite 注入:走同源路径 + devServer 代理,无需写完整域名 */
  export function apiUsesSameOrigin(): boolean {
    const v = import.meta.env.VITE_API_RELATIVE;
    return v === "1" || v === "true";
  }
  
  /**
   * 后端 API 根地址(无协议末尾斜杠)。
   * 在 `.env.development` 中配置 `VITE_API_BASE_URL`;
   * H5 开发可走 `VITE_API_RELATIVE` + 代理,此时为空串;
   * 正式包留空且无同源标记则走本地演示数据。
   */
  export function getApiBase(): string {
    if (apiUsesSameOrigin()) {
      return "";
    }
    const val = import.meta.env.VITE_API_BASE_URL;
    if (typeof val !== "string" || !val.trim()) {
      return "";
    }
    return val.trim().replace(/\/+$/, "");
  }
  
  export function apiEnabled(): boolean {
    if (apiUsesSameOrigin()) {
      return true;
    }
    return getApiBase() !== "";
  }
  
  /** 当前配置的 API 是否为本机回环(仅适合电脑浏览器 H5,不适合真机 App) */
  export function isApiBaseLoopback(): boolean {
    const b = getApiBase();
    return b.length > 0 && /127\.0\.0\.1|localhost/i.test(b);
  }
  
  /** 连接失败信息里出现本机地址时,补充说明(避免误以为后端挂了) */
  export function appendLoopbackConnectHint(msg: string): string {
    const m = msg.trim();
    if (!m) {
      return m;
    }
    if (/127\.0\.0\.1|localhost/i.test(m)) {
      return `${m} — 真机/App 上 127.0.0.1 是手机自己。请把 uniapp/.env.development 里 VITE_API_BASE_URL 改成电脑的局域网 IP(与手机同一 Wi‑Fi),例如 http://192.168.1.5:9898,保存后重新编译运行;Android 官方模拟器可用 http://10.0.2.2:9898`;
    }
    return m;
  }