# 环境配置说明

## 问题背景

Vite 的 proxy 代理功能只在 **H5 开发环境** 下生效，对于 App、微信小程序、鸿蒙等平台不支持代理，必须直接使用真实域名。

## 解决方案

通过环境变量 + 条件编译的方式，实现不同平台使用不同的 API 地址。

## 配置文件说明

### 1. 环境变量文件

- **`.env`** - 默认配置（所有环境的基础配置）
- **`.env.development`** - 开发环境配置
- **`.env.production`** - 生产环境配置

### 2. 各平台 API 地址规则

| 平台 | 环境 | API 地址 | 说明 |
|------|------|----------|------|
| H5 | 开发 | `/base` | 通过 Vite proxy 代理到 `http://localhost:8080` |
| H5 | 生产 | `https://nxy.gbdfarm.com:9000/pro-uniapp` | 真实域名 |
| 小程序 | 所有 | `https://nxy.gbdfarm.com:9000/pro-uniapp` | 真实域名 |
| App | 所有 | `https://nxy.gbdfarm.com:9000/pro-uniapp` | 真实域名 |
| 鸿蒙 | 所有 | `https://nxy.gbdfarm.com:9000/pro-uniapp` | 真实域名 |

## 工作原理

### H5 开发环境
```javascript
// 请求: /base/api/user/info
// ↓ Vite proxy 转发
// 实际请求: http://localhost:8080/api/user/info
```

### 其他平台或生产环境
```javascript
// 请求: https://nxy.gbdfarm.com:9000/pro-uniapp/api/user/info
// ↓ 直接请求
// 实际请求: https://nxy.gbdfarm.com:9000/pro-uniapp/api/user/info
```

## 如何使用

### 开发环境

1. **H5 开发**
   ```bash
   npm run dev:h5
   ```
   自动使用 `/base` 代理路径

2. **小程序/App/鸿蒙开发**
   ```bash
   npm run dev:mp-weixin  # 微信小程序
   npm run dev:app        # App
   ```
   自动使用真实域名

### 生产环境

```bash
npm run build:h5           # H5 生产
npm run build:mp-weixin    # 微信小程序生产
npm run build:app          # App 生产
```

所有平台都使用真实域名

## 修改配置

如需修改 API 地址，编辑对应的环境变量文件：

### 修改开发环境地址
编辑 `.env.development`：
```env
VITE_BASE_URL=/base
VITE_UPLOAD_URL=http://nxy.gbdfarm.com
```

### 修改生产环境地址
编辑 `.env.production`：
```env
VITE_BASE_URL=https://nxy.gbdfarm.com:9000/pro-uniapp
VITE_UPLOAD_URL=https://nxy.gbdfarm.com
```

## 注意事项

1. **环境变量必须以 `VITE_` 开头**才能在代码中访问
2. **修改环境变量后需要重启开发服务器**
3. **小程序/App 不支持 proxy**，开发时也会直接请求真实域名
4. **确保后端服务器配置了 CORS**，允许跨域请求

## 技术实现

### config/api.js
使用条件编译判断平台：
```javascript
// #ifdef H5
const isH5 = true;
// #endif
// #ifndef H5
const isH5 = false;
// #endif

const dev = {
  serve: isH5 ? "/base" : "https://nxy.gbdfarm.com:9000/pro-uniapp",
  upload: import.meta.env.VITE_UPLOAD_URL
};
```

### vite.config.js
配置 H5 开发环境代理：
```javascript
server: {
  proxy: {
    '/base': {
      target: 'http://localhost:8080',
      changeOrigin: true,
      rewrite: (path) => path.replace(/^\/base/, ''),
    },
  },
}
```

## 常见问题

### Q: 为什么小程序开发时不能用 proxy？
A: 小程序运行在微信客户端，不是浏览器环境，无法使用 Vite 的开发服务器代理功能。

### Q: 如何在本地调试小程序？
A: 需要启动本地后端服务，或者使用内网穿透工具（如 ngrok）将本地服务暴露到公网。

### Q: 环境变量不生效怎么办？
A: 
1. 检查变量名是否以 `VITE_` 开头
2. 重启开发服务器
3. 清除缓存后重新构建

## 相关文件

- `vite.config.js` - Vite 配置文件（包含 proxy 配置）
- `config/api.js` - API 地址配置
- `utils/request.js` - 请求拦截器
- `.env` - 默认环境变量
- `.env.development` - 开发环境变量
- `.env.production` - 生产环境变量
