Skip to content

2.3 前端服务启动 ​

概述

本章指导您启动前端开发服务器,包括依赖安装、环境配置和 Vite 开发服务器启动。

步骤一:安装依赖 ​

bash
# 进入前端项目目录
cd ui

# -----------------------------------------------------------------------------
# 安装依赖(推荐 pnpm — 速度快、磁盘占用少)
# -----------------------------------------------------------------------------
# install → 从 pnpm-lock.yaml 精确安装所有依赖
pnpm install

# 如果没有 pnpm,也可以使用 npm
npm install

Node.js 版本

前端项目要求 Node.js >= 18,推荐使用 22.x。可通过 node -v 检查版本。

步骤二:配置环境变量 ​

前端有两个环境配置文件:

.env.development(开发环境) ​

bash
# 服务端口
VITE_PORT = 8001

# 公共基础路径
VITE_PUBLIC_PATH = /

# 代理配置(JSON 数组格式:[["前缀","目标地址"]])
VITE_PROXY = [["/api","http://admin.thinkphp6.elevue/api"]]

# API 接口基础路径(留空,由代理处理)
VITE_GLOB_API_URL =

# API 前缀
VITE_GLOB_API_URL_PREFIX = /api

# 上传接口地址
VITE_GLOB_UPLOAD_URL = /api/upload

# 图片访问地址
VITE_GLOB_IMG_URL = http://file.thinkphp6.elevue

# 是否启用 Mock 数据(false = 使用真实后端 API)
VITE_USE_MOCK = false

.env.production(生产环境) ​

bash
# 公共基础路径
VITE_PUBLIC_PATH = /

# 是否在生产环境删除 console
VITE_DROP_CONSOLE = true

# API 接口基础路径(留空,由 Nginx 代理处理)
VITE_GLOB_API_URL =

# API 前缀
VITE_GLOB_API_URL_PREFIX = /api

# 上传接口地址
VITE_GLOB_UPLOAD_URL = /api/upload

# 图片访问地址
VITE_GLOB_IMG_URL = http://file.thinkphp6.elevue

# 是否启用 gzip 压缩
VITE_BUILD_COMPRESS = gzip

# 压缩后是否删除原文件
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false

步骤三:启动开发服务器 ​

bash
# -----------------------------------------------------------------------------
# 启动 Vite 开发服务器(支持热更新 — 修改代码后浏览器自动刷新)
# -----------------------------------------------------------------------------
pnpm dev

# 或使用 npm
npm run dev

启动成功后会看到:

text
  VITE v3.2.x  ready in 1234 ms

  ➜  Local:   http://localhost:8001/
  ➜  Network: http://192.168.1.100:8001/

步骤四:配置 API 代理 ​

开发环境下,前端通过 Vite 代理将 /api 请求转发到后端服务。

在 vite.config.ts 中配置代理:

typescript
// ui/vite.config.ts
server: {
  port: 8001,                                       // 开发服务器端口(对应 VITE_PORT)
  proxy: {
    '/api': {
      target: 'http://admin.thinkphp6.elevue/api',  // 后端服务地址(对应 VITE_PROXY)
      changeOrigin: true,                            // 开启跨域(修改请求头的 Origin)
      rewrite: (path) => path,                       // 保持路径不变(不做路径替换)
    },
  },
}

确保后端服务已启动(php think run),然后访问 http://localhost:8001。

步骤五:验证前后端联调 ​

  1. 打开浏览器访问 http://localhost:8001
  2. 应该看到登录页面
  3. 输入默认账号 admin / 123456
  4. 登录成功后进入控制台页面

代理原理

浏览器 → http://localhost:8001/api/login → Vite 代理 → http://admin.thinkphp6.elevue/api/login → 后端处理

构建生产版本 ​

bash
# -----------------------------------------------------------------------------
# 构建生产版本(Vite 会压缩代码、Tree-shaking、分包)
# -----------------------------------------------------------------------------
# build → 输出到 ui/dist/ 目录
pnpm build

# -----------------------------------------------------------------------------
# 预览构建结果(本地启动一个静态文件服务器预览 dist/ 内容)
# -----------------------------------------------------------------------------
pnpm preview

构建完成后,ui/dist/ 目录包含可部署的静态文件。

常见问题 ​

1. pnpm install 报错 ​

bash
# -----------------------------------------------------------------------------
# 清除缓存重新安装(修复依赖冲突或缓存损坏)
# -----------------------------------------------------------------------------
# rm -rf → 递归强制删除(node_modules 和 lockfile)
rm -rf node_modules pnpm-lock.yaml
pnpm install

2. 端口 8001 被占用 ​

修改 .env.development 中的 VITE_PORT 或 vite.config.ts 中的 server.port:

typescript
server: {
  port: 8002,  // 改为其他端口(如 8002、8003 等)
}

3. API 请求 404 ​

检查后端服务是否启动,以及代理配置是否正确:

bash
# 确认后端在运行(直接请求后端登录接口)
# -X POST → POST 方法
# -H      → 设置 Content-Type 为 JSON
# -d      → 发送 JSON 请求体
curl http://admin.thinkphp6.elevue/api/login -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"123456"}'

小蚂蚁云团队 · 提供技术支持