部署你的
Vue 项目
上传 Vue、Vite、Vue CLI 或 Nuxt 的静态输出,发布时保留 history mode 回退、HTTPS、全球边缘网络,以及需要时可接的自定义域名。
base: './',
先搞清楚要上传哪个 Vue 文件夹
多数 Vue 部署问题在托管前就发生:上传错输出文件夹、base path 错误,或 build 没有先本机预览。
Vite + Vue
Vite 默认把正式构建结果放在 dist。如果 config 修改了 build.outDir 或 base,请上传实际输出文件夹并测试资源 URL。
Vue CLI
Vue CLI 静态 build 通常部署 dist。如果 app 会放在子路径,publicPath 需要符合最后 URL 结构。
Nuxt static output
Nuxt 可以生成静态输出,但 server-rendered routes 和 server APIs 需要 runtime。这个流程只上传生成后的 public 静态文件。
Vue Router history mode 真正需要什么
干净 URL 值得保留
Hash routes 几乎哪里都能跑,但带 # 的网址看起来像 workaround,分享链接和访问统计都会显得不够干净。
Vue Router history mode 让你使用 /about 或 /dashboard/settings 这类干净路径。代价是主机必须知道:不是实际文件的路由,要回到 index.html。
DeployPages 如何处理 history mode
当请求没有对应真实静态资源时,DeployPages 会提供根目录 index.html,让 Vue Router 在浏览器中解析最后画面。
- 直接访问嵌套路由不会立刻硬失败。
- 根目录 index.html 会作为回退响应。
- Vue mount 后读取当前 URL,渲染正确路由。
Vue 上线前检查
Vue app 在 dev 正常,仍可能上传后失效。这些检查能先抓出常见问题。
Base path
Vite 请确认 base;Vue CLI 请确认 publicPath。错误值通常会变成 CSS、JS、字体或图片 404。
History 回退
直接打开嵌套路由并刷新。如果页面仍正常,就表示回退设置生效。
纯静态输出
DeployPages 提供静态文件。API routes、server middleware 和 SSR-only 行为需要独立后端或 runtime。
本机预览
请用真正的本机 preview server 检查正式构建结果。用 file:// 开 dist/index.html 可能会隐藏或制造与部署不同的问题。
Vue 部署流程
构建静态资源
在 Vite、Vue CLI 或 Nuxt static mode 执行正式构建,让 app 生成浏览器可直接加载的文件。
找到输出文件夹
多数 Vue 和 Vite 项目输出到 dist。Nuxt static 项目则依设置上传 .output/public 或生成后的 dist。
Nuxt static build 通常依项目设置上传 .output/public 或 dist。
上传并验证链接
上传完整输出文件夹,网站上线后检查深层链接、router 导航和资源路径。
常见 Vue 部署问题
嵌套路由刷新回 404
Vue Router 使用 history mode,但托管服务正在找真实文件。使用 SPA 回退,让未知 document route 回到 index.html。
CSS 或 JS 文件回 404
检查 Vite base 或 Vue CLI publicPath,也确认你上传了完整 dist 文件夹,包含生成后的 assets。
Hash mode 可用,history mode 不行
Hash mode 把路由放在浏览器 # 之后。History mode 使用干净 URL,因此直接访问时需要服务器回退行为。
Nuxt 输出缺少服务器行为
Static Nuxt output 可以用文件托管。Nuxt server routes、server middleware 和 SSR-only 行为需要 server runtime。
Vue 部署常见问题
为什么 CSS 和 JS 文件回 404?
这通常代表资源路径是用另一个 base URL 构建,或 assets 目录没有上传。Vite 请看 base,Vue CLI 请看 publicPath。
支持 Nuxt 吗?
支持静态输出。请先生成静态网站,再上传生成的 public 文件夹。DeployPages 不适合 Nuxt server rendering 或 server API routes。
应该用 hash mode 还是 history mode?
想要干净 URL 且主机支持回退到 index.html,就用 history mode。Hash mode 较容易托管,但每个 client-side route 都会有 #。
应该上传 Vue 原始项目吗?
不用。请上传正式输出文件夹,通常是 dist。原始项目包含开发文件和依赖包,不适合直接提供。
Pinia 或 Vuex 状态刷新后会保留吗?
不会自动保留。浏览器刷新会重置内存中的 client state。重要状态请用 localStorage 或你偏好的 persistence plugin。
可以回滚到上一个版本吗?
可以。DeployPages 保留部署历史,需要时可以回到先前的静态 build。