部署你的
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。