🌐Vue 打包後的 dist 怎麼跑?新手也能懂的 3 種方式(本機測試到上線部署一次搞懂)

前言:為什麼 Vue 的 dist 不能「直接點開」?

很多新手第一次打包 Vue 專案後,會看到產生一個資料夾叫 dist,直覺就會想:

「我雙擊 index.html 不就好了嗎?」

結果打開後可能是空白頁、功能壞掉、或切換頁面就 404。

原因很簡單:
dist 是一包「靜態檔案」(HTML/CSS/JS/圖片),它需要一個「伺服器」把檔案用正確方式送到瀏覽器,才能正常運作。

你可以把 dist 想成:

  • ✅ 已經印好的傳單(內容都有了)

  • ❌ 但還沒有人幫你發到路人手上
    「伺服器」就是那個幫你發傳單的人。


一、最推薦:用「一鍵啟動」的本機靜態伺服器(新手最快)

這個方法適合:

  • 你只是想在自己電腦上確認 dist 是否正常

  • 想快速讓同事在同一台電腦或同網段測試

做法(範例指令)

  1. 進到 dist 所在的資料夾(或專案根目錄也可以)

  2. 使用一個靜態伺服器工具啟動

例如用 npx 直接跑一個輕量伺服器(不需要全域安裝):

npx lite-server --baseDir="dist"

完成後通常會出現一個網址,例如:

  • http://localhost:xxxx

你用瀏覽器打開那個網址,就能看到打包後的成果。

這方法的優點

  • 上手最快

  • 適合「我只想確認 dist 能不能跑」這種需求

  • 不需要懂部署


二、Windows 也能超簡單:用內建環境快速開一個網站

如果你在 Windows 上,不想裝太多工具,也可以用「現成就有的環境」開一個簡單網站。

做法(示意)

  1. 把命令列切到 dist 目錄

  2. 用某個內建方式啟動簡易 Web Server
    (例如你電腦有安裝常見開發環境,通常都能做到)

概念重點是:

  • 讓瀏覽器用 http://... 的方式打開

  • 不要用 file:///.../index.html 直接開檔


三、正式上線(公司/對外):用 Nginx 或 IIS 才是標準做法

如果你的 dist 要放到:

  • 公司內部伺服器

  • 雲端主機

  • 需要給客戶或同事大量使用

那就不是「本機跑跑看」等級,而是「正式部署」。

這時常見有兩條路:

1) Linux 伺服器:Nginx 最普遍

優點:

  • 穩定、效能好

  • 前端部署的業界標準答案之一

部署流程概念是:

  1. 把 dist 上傳到伺服器指定目錄

  2. 設定 Nginx 將網站根目錄指到 dist

  3. 加上「重新整理不 404」的 SPA 支援

2) Windows 伺服器:IIS 很常見

如果公司環境偏 Windows:

  • IIS 也能部署 dist

  • 同樣要設定「路由回到 index.html」避免刷新 404


四、為什麼「重新整理會 404」?(Vue Router 新手最常踩)

很多 Vue 專案是單頁應用(SPA),意思是:

  • 點「頁面切換」其實不是去伺服器要新頁面

  • 而是前端在瀏覽器裡自己切換畫面

所以當你在 /report 這種網址按重新整理時:

  • 瀏覽器會真的去伺服器問:「有沒有 /report 這個檔案?」

  • 伺服器如果只會找實體檔案,就會回你 404

正確作法是:

  • 不管你輸入什麼路徑

  • 伺服器都要回傳 index.html

  • 讓 Vue 接手判斷要顯示哪個畫面

這就是為什麼正式部署時,需要做「SPA fallback」設定。


五、快速自我檢查清單(10 秒判斷你是哪種問題)

✅ 打開是空白頁

常見原因:

  • 專案部署在子路徑,但打包路徑設定不對

  • 靜態資源路徑(JS/CSS)載入失敗

✅ 可打開首頁,但換頁或刷新就 404

常見原因:

  • 伺服器沒有做 SPA fallback

  • Vue Router 使用 history 模式但伺服器沒設定

✅ 首頁正常,但 API 全部壞掉

常見原因:

  • 前端呼叫後端的網址在正式環境不同

  • 環境變數沒有區分 development / production


結語:你該用哪一種方式?

如果你現在只是想確認 dist 能不能跑:

  • 本機測試:用「快速靜態伺服器」最省事

  • 公司要上線:用 Nginx / IIS 才是長期正確作法

  • 有 Vue Router history:一定要做「重新整理不 404」設定

留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🖥️遠端桌面連線完整新手指南:Windows RDP、Chrome Remote Desktop、AnyDesk、TeamViewer 一次搞懂

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)