From d90847bad0946827c0186e3e79daee234965b2bc Mon Sep 17 00:00:00 2001 From: jacy <18049821889@163.com> Date: Mon, 3 Aug 2026 20:22:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20staging=20C=E7=AB=AF=20H5=20?= =?UTF-8?q?=E6=A0=B9=E8=B7=AF=E5=BE=84=E9=83=A8=E7=BD=B2=EF=BC=8C=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=20/user=20=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- apps/mini-user/config/index.ts | 3 +-- deploy/nginx-dukang-staging.conf | 8 ++++++++ deploy/remote-release.sh | 20 +++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/apps/mini-user/config/index.ts b/apps/mini-user/config/index.ts index 9d09ecd..9efa05f 100644 --- a/apps/mini-user/config/index.ts +++ b/apps/mini-user/config/index.ts @@ -105,8 +105,7 @@ export default defineConfig(async () => ({ }, }, h5: { - // 生产发版由 remote-release 注入 TARO_H5_PUBLIC_PATH=/user/、TARO_H5_ROUTER_BASENAME=/user - // 本地预览勿强制 basename,否则静态托管下易白屏 + // staging:user-test.dukanghaoke.com 根路径;生产:remote-release 注入 /user/ publicPath: process.env.TARO_H5_PUBLIC_PATH || '/', ...(process.env.TARO_H5_ROUTER_BASENAME ? { diff --git a/deploy/nginx-dukang-staging.conf b/deploy/nginx-dukang-staging.conf index dd2ccbb..318d536 100644 --- a/deploy/nginx-dukang-staging.conf +++ b/deploy/nginx-dukang-staging.conf @@ -69,6 +69,14 @@ server { proxy_set_header Connection ""; } + # 旧 /user 前缀书签 → 根路径(staging 独立域名,无 /user 子路径) + location = /user { + return 301 /; + } + location ^~ /user/ { + rewrite ^/user/(.*)$ /$1 permanent; + } + location / { proxy_pass http://127.0.0.1:8191; proxy_http_version 1.1; diff --git a/deploy/remote-release.sh b/deploy/remote-release.sh index eddbe52..d080cc6 100644 --- a/deploy/remote-release.sh +++ b/deploy/remote-release.sh @@ -88,9 +88,14 @@ corepack prepare pnpm@11.2.2 --activate 2>/dev/null || true echo "==> 2. 安装依赖" # mini-user H5(Taro)构建峰值内存较高 export NODE_OPTIONS="${NODE_OPTIONS:---max-old-space-size=8192}" -# 生产部署 path:nginx 入口为 /user/ -export TARO_H5_PUBLIC_PATH="${TARO_H5_PUBLIC_PATH:-/user/}" -export TARO_H5_ROUTER_BASENAME="${TARO_H5_ROUTER_BASENAME:-/user}" +# C 端 H5 静态资源路径:staging 独立域名根路径;生产 nginx 入口为 /user/ +if [[ "$DUKANG_DEPLOY_ENV" == "staging" ]]; then + export TARO_H5_PUBLIC_PATH="${TARO_H5_PUBLIC_PATH:-/}" + unset TARO_H5_ROUTER_BASENAME +else + export TARO_H5_PUBLIC_PATH="${TARO_H5_PUBLIC_PATH:-/user/}" + export TARO_H5_ROUTER_BASENAME="${TARO_H5_ROUTER_BASENAME:-/user}" +fi # C 端 H5 编译期注入的 API origin(勿落到 localhost) export VITE_API_TARGET="${VITE_API_TARGET:-$VITE_API_DEFAULT}" export VITE_APP_ENV="$DUKANG_DEPLOY_ENV" @@ -167,3 +172,12 @@ APP_ROOT="$APP_ROOT" DEPLOY_TRIGGER="${DEPLOY_TRIGGER:-manual}" DUKANG_ENV_FILE= || echo "WARN: system_version 写入失败" echo "==> 发版完成 ($DUKANG_DEPLOY_ENV)" + +if [[ "$DUKANG_DEPLOY_ENV" == "staging" ]]; then + echo "==> 8. 重载 nginx(staging)" + if command -v nginx >/dev/null 2>&1 && nginx -t 2>/dev/null; then + systemctl reload nginx || echo "WARN: nginx reload failed" + else + echo "WARN: nginx 未安装或配置校验失败,跳过重载" + fi +fi