开发指南

XYGo Admin 2026-04-01 28 次阅读

租户前端本地开发环境配置、环境变量与 Vite 代理说明

开发指南

环境变量

租户前端使用三层环境变量配置:

.env(通用,所有环境生效)

变量 默认值 说明
VITE_PORT 3007 开发服务器端口
VITE_BASE_URL /tenant/ 应用部署基础路径
VITE_ADMIN_PATH /tenant 后台管理路由前缀
VITE_ACCESS_MODE backend 权限模式(前端/后端)
VITE_LOCK_ENCRYPT_KEY s3cur3k3y4tenant 锁屏加密密钥
VITE_TIMEZONE_MODE client 时区模式

.env.development(开发环境)

变量 默认值 说明
VITE_API_URL / API 请求基础路径(走代理)
VITE_API_PROXY_URL http://localhost:4096 Vite 代理目标(后端地址)
VITE_DROP_CONSOLE false 是否移除 console
VITE_OUT_DIR dist 构建输出目录

.env.production(生产环境)

变量 默认值 说明
VITE_BASE_URL / 独立域名部署时用 /
VITE_API_URL https://demo.xygoadmin.com 后端完整域名
VITE_DROP_CONSOLE true 移除 console

重要:生产构建时 VITE_API_URL 必须填写后端的完整域名(含协议),因为 Vite 代理仅在开发环境生效。

Vite 代理配置

vite.config.ts 中为以下路径配置了开发代理:

typescript 复制代码
proxy: {
  '/tenant': {
    target: VITE_API_PROXY_URL,  // http://localhost:4096
    changeOrigin: true,
    bypass(req) {
      // 避免代理 Vite 内部请求和静态资源
      if (req.headers.accept?.includes('text/html')) return req.url
      const pathname = (req.url || '').split('?')[0]
      if (pathname.includes('/@') || pathname.includes('/node_modules/') ||
          pathname.includes('__vite') || /\.\w+$/.test(pathname)) {
        return req.url
      }
    }
  },
  '/attachment': { target: VITE_API_PROXY_URL, changeOrigin: true },
  '/captcha':    { target: VITE_API_PROXY_URL, changeOrigin: true },
  '/site':       { target: VITE_API_PROXY_URL, changeOrigin: true },
  '/system':     { target: VITE_API_PROXY_URL, changeOrigin: true },
}

/tenant 代理的 bypass 逻辑

由于前端路由前缀也是 /tenant,Vite 开发服务器需要区分:

  • API 请求/tenant/auth/login)→ 代理到后端
  • 前端页面/tenant/login,Accept 含 text/html)→ 返回前端
  • 静态资源/@vite/client.js 文件等)→ 返回前端

bypass 函数通过检查 Accept 头、路径前缀和文件扩展名来实现这一区分。

本地联调步骤

1. 启动后端

bash 复制代码
cd server
gf run main.go
# 默认运行在 http://localhost:4096(取决于 config.yaml 配置)

2. 确认代理目标

检查 .env.developmentVITE_API_PROXY_URL 是否指向后端地址:

env 复制代码
VITE_API_PROXY_URL = http://localhost:4096

3. 启动租户前端

bash 复制代码
cd web-tenant
pnpm install
pnpm dev
# 访问 http://localhost:3007/tenant/login

4. 登录测试

使用租户管理员账号登录。租户管理员数据存储在 xy_tenant_admin 表,与平台管理员 xy_admin_user 独立。

常见问题

Q: 开发时 API 请求 404

  1. 确认后端服务已启动
  2. 确认 VITE_API_PROXY_URL 端口正确
  3. 确认后端 cmd.go 中租户路由已注册

Q: 生产环境图片不显示

Nginx 缺少 /attachment/ 代理规则。所有附件 URL 形如 /attachment/xxx,必须反向代理到后端。

Q: 生产环境 API 请求到前端域名

检查 .env.productionVITE_API_URL 是否设置为后端完整域名(含 https://)。

Q: 验证码不显示

Nginx 缺少 /captcha/ 代理规则,或 .env.development 代理配置遗漏。

Q: /tenant 路径下的页面刷新后空白

项目使用 Hash 路由模式(URL 带 #),正常情况不会出现此问题。如果确实空白,检查 VITE_BASE_URL 配置是否与部署路径一致。