فهرست منبع

fix(uniapp): BASE_API 区分 dev / build 模式

之前 BASE_API 写死 '/dev-api':
  - dev:h5 模式: vite proxy 转发 /dev-api → 9225 OK
  - build:h5 模式: 打包后走 https://host/dev-api/...
    但生产 nginx 通常不反代 /dev-api → 404
    (用户实际生产 https://xlpt.lygjdf.net 就遇到 404 No endpoint)

修复:
  - import.meta.env.MODE === 'production' ? '/prod-api' : '/dev-api'
  - 与 plus-ui 部署约定一致(参见 nginx ly.conf)
  - 同步修改 oss.ts 走同样判断

部署:生产 nginx 需要配
  location /prod-api/ {
    proxy_pass http://backend:9225/;  # 末尾 / 把 /prod-api/ 替换成 /
  }

dev:h5 不受影响,继续走 vite proxy /dev-api
yangjingjing 1 روز پیش
والد
کامیت
ba5ce50f67
2فایلهای تغییر یافته به همراه11 افزوده شده و 9 حذف شده
  1. 5 4
      src/utils/oss.ts
  2. 6 5
      src/utils/request.ts

+ 5 - 4
src/utils/oss.ts

@@ -19,10 +19,11 @@
  * 改为硬编码 '/dev-api' —— 与 request.ts 默认行为一致
  */
 
-// H5 端走 vite proxy,请求到本机 5173,被 proxy 到 9225
-// 真机/小程序端走同域反代,也是 '/dev-api'
-// 部署到生产时,如 nginx 配置调整,这里也要同步改
-const BASE_API = '/dev-api'
+// H5 端走 vite proxy (dev) / nginx 反代 (prod)
+// - dev:h5 → '/dev-api'(vite.config.ts 已代理到 9225)
+// - build:h5 → '/prod-api'(需要 nginx 把 /prod-api/ 转发到后端 9225)
+// 与 request.ts 保持一致,方便统一调整
+const BASE_API = import.meta.env.MODE === 'production' ? '/prod-api' : '/dev-api'
 
 export function ossUrl(url: string | null | undefined): string {
   if (!url) return ''

+ 6 - 5
src/utils/request.ts

@@ -73,14 +73,15 @@ export interface BizResponse<T = any> {
 
 /**
  * 默认 BASE_API
- * - 开发: /dev-api(vite.config.ts 已代理到 9225)
- * - 生产: 与 plus-ui 的 nginx 反代一致,使用 /prod-api
+ * - dev:h5 (/dev-api): vite.config.ts 已代理到 9225
+ * - build:h5: 与生产 nginx 反代一致,使用 /prod-api
+ *   部署时需要 nginx 把 /prod-api/... 转发到后端 9225
+ *   (参见 plus-ui 部署说明 / nginx ly.conf)
  *
  * 之所以这里仍写 'dev-api' 是因为本仓库 uniapp 的 manifest.json 里 h5.devServer.proxy
- * 只配了 /dev-api,所有现有页面(/dev-api/...)都按此风格;生产环境需要 nginx 把 /prod-api
- * 转发到后端 8080 即可(参见 plus-ui 部署说明)
+ * 只配了 /dev-api,所有现有页面(/dev-api/...)都按此风格
  */
-const BASE_API = '/dev-api'
+const BASE_API = import.meta.env.MODE === 'production' ? '/prod-api' : '/dev-api'
 
 /** 拼接 url: 支持绝对路径(http开头)和相对路径 */
 function buildUrl(url: string): string {