前端篇:手把手教你将 Vue 3 项目免费部署到 Vercel

4 阅读5分钟

很多开发者问我:“部署 Vue 3 项目是不是一定要买服务器?”

答案是:完全不需要。

Vue 3 项目打包后就是一堆静态文件(HTML + CSS + JS),你只需要一个能托管静态文件的平台就够了。Vercel 是目前对 Vue 生态支持最好、配置最简单的免费平台。本文将带你一步步把 Vue 3 项目部署到 Vercel,并解决 SPA 路由 404 这个最大的坑。

一、前置准备

在开始部署之前,确保你已经有以下准备:

准备项说明
Vue 3 项目一个已经开发完成的 Vue 3 + Vite 项目
GitHub 账号Vercel 通过 GitHub 仓库自动部署
代码已推送到 GitHub项目需要在一个 GitHub 仓库中

还没有 GitHub 账号的话,先去 github.com 注册一个,免费的。

二、Vercel 注册与登录

  1. 打开 vercel.com
  2. 点击右上角 "Sign Up"
  3. 选择 "Continue with GitHub",用你的 GitHub 账号授权登录
  4. 授权后,Vercel 会自动创建账号并跳转到 Dashboard

💡 提示:Vercel 免费套餐足够个人项目使用,不需要绑定信用卡

三、部署 Vue 3 项目(三种方式)

方式一:通过 GitHub 自动部署(最推荐)

这是最常用的方式,配置一次后,每次 git push 都会自动重新部署

步骤 1:在 Vercel 创建项目

  1. 登录 Vercel Dashboard,点击 "Add New...""Project"
  2. Vercel 会自动列出你 GitHub 账号下的所有仓库
  3. 找到你的 Vue 3 项目仓库,点击 "Import"

步骤 2:配置项目设置

Vercel 会自动检测到你的项目使用 Vite + Vue,并自动配置构建命令。你不需要手动修改任何配置

如果项目根目录不在仓库根目录(比如前端代码在 frontend/ 下),点击 "Configure" 手动设置 Root Directory。

步骤 3:点击 Deploy

点击 "Deploy" 按钮,Vercel 会开始构建和部署。几秒到几分钟后,你会看到部署成功的页面。

部署完成后,Vercel 会分配一个 .vercel.app 域名,例如 https://your-project.vercel.app这个链接可以直接分享给任何人访问。

方式二:通过 Vercel CLI 部署

适合喜欢命令行的开发者:

# 1. 全局安装 Vercel CLI
npm install -g vercel

# 2. 在项目根目录登录
vercel login

# 3. 部署(首次会引导配置)
vercel

# 4. 部署到生产环境
vercel --prod

方式三:通过 Git 推送自动部署(已配置后)

一旦 Vercel 项目创建完成,后续每次推送代码都会自动触发部署:

git add .
git commit -m "update"
git push

推送后,Vercel 会自动重新构建和部署,无需任何手动操作。

四、核心配置:解决 SPA 路由 404 问题(关键!)

4.1 问题现象

部署成功后,你会发现:

  • 访问首页 / ✅ 正常
  • 点击路由跳转到 /login ✅ 正常
  • 刷新 /login 页面 ❌ 出现 404

原因:Vue Router 使用 history 模式时,浏览器刷新会向服务器请求 /login 这个路径。但服务器上根本没有 login.html 这个文件,只有 index.html,所以返回 404。

4.2 解决方案:配置 vercel.json

在项目根目录创建 vercel.json 文件:

{
  "rewrites": [
    {
      "source": "/(.*)",
      "destination": "/index.html"
    }
  ]
}

这个配置的作用:所有无法匹配到静态文件的请求,都返回 index.html,然后由 Vue Router 在前端接管路由。

配置好后,提交代码:

git add vercel.json
git commit -m "fix: add vercel.json for SPA routing"
git push

推送后 Vercel 会自动重新部署,刷新子路由就不会再 404 了。

4.3 进阶配置:完整 vercel.json

如果你的项目还需要配置安全响应头或自定义构建命令,可以参考这个完整版本:

{
  "buildCommand": "npm run build",
  "outputDirectory": "dist",
  "devCommand": "npm run dev",
  "installCommand": "npm install",
  "framework": "vite",
  "rewrites": [
    {
      "source": "/(.*)",
      "destination": "/index.html"
    }
  ],
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Frame-Options",
          "value": "DENY"
        }
      ]
    }
  ]
}

五、环境变量配置

5.1 为什么需要环境变量

项目中的 API 地址、密钥等敏感信息,不应该硬编码在代码里。不同环境(开发/生产)的配置也不同。

5.2 Vite 环境变量规则

Vite 中,只有以 VITE_ 开头的变量才会暴露给前端:

// .env.production
VITE_API_URL=https://your-backend.onrender.com/api
VITE_SENTRY_DSN=xxx

// 代码中访问
const apiUrl = import.meta.env.VITE_API_URL  // ✅ 可访问
const secret = import.meta.env.SECRET_KEY    // ❌ undefined(未暴露)

5.3 在 Vercel 配置环境变量

非常重要:Vite 的环境变量在构建时就被替换到代码中了。所以必须在 Vercel 构建之前配置好环境变量。

操作步骤

  1. 进入 Vercel 项目页面 → SettingsEnvironment Variables
  2. 添加变量(Key + Value)
  3. 选择环境(Production / Preview / Development)
  4. 点击 Save
  5. 重新触发部署(因为变量是在构建时注入的,保存后需要重新构建才会生效)
# 或者在命令行添加
vercel env add VITE_API_URL production

⚠️ 常见错误:很多人配置完环境变量后忘记重新部署,导致变量不生效。记住:配置变量 → 重新部署,两步缺一不可。

六、绑定自定义域名(可选)

Vercel 提供的 .vercel.app 域名可以直接使用,但如果想绑定自己的域名:

  1. 在 Vercel 项目 → SettingsDomains
  2. 输入你的域名(如 zswgxl.xyz
  3. 按照提示在域名注册商(如阿里云)添加 DNS 解析记录
  4. 等待 DNS 生效(几分钟到几小时)
  5. Vercel 会自动签发 SSL 证书

七、常见问题与踩坑

7.1 部署后页面空白

原因:静态资源路径不对。

解决方案:在 vite.config.js 中检查 base 配置:

export default defineConfig({
  base: '/',  // 部署到根路径时用 '/'
  // 如果部署到子路径,比如 https://xxx.github.io/my-app/
  // base: '/my-app/'
})

7.2 刷新页面 404

参考上面第四节,配置 vercel.jsonrewrites 规则。

7.3 API 请求跨域

前端请求后端 API 时出现跨域错误。解决方案:

  1. 在后端配置 CORS(推荐)
  2. 或使用 Vercel 的 Rewrites 代理转发
{
  "rewrites": [
    {
      "source": "/api/(.*)",
      "destination": "https://your-backend.onrender.com/api/$1"
    }
  ]
}

7.4 环境变量不生效

检查三点:

  1. 变量是否以 VITE_ 开头
  2. 是否在 Vercel Dashboard 中配置了
  3. 配置后是否重新触发了部署

八、总结

Vercel 部署 Vue 3 项目的核心流程:

  1. 代码推送到 GitHub
  2. Vercel 导入仓库 → 自动识别 Vite + Vue
  3. 点击 Deploy → 获得 .vercel.app 域名
  4. 配置 vercel.json 解决 SPA 路由 404
  5. 配置环境变量 → 重新部署

整个过程完全免费,不需要购买任何服务器。部署完成后,每次 git push 都会自动更新线上版本,非常方便。