後端順利上線了,接著換前端!我們的 React 前端是透過 Vite 建立的,編譯後會產生純靜態的 HTML、CSS 和 JavaScript 檔案。今天我們選擇使用 Render 這個平台來託管我們的網站。
在部署前端時,Render 提供了好幾種選項。我們為什麼選「Static Site (靜態網站託管)」,而不選「Web Service (網頁伺服器)」?
| 比較項目 | Static Site (靜態網站託管) | Web Service (網頁伺服器託管) |
|---|---|---|
| 運作原理 | 只是個檔案伺服器。Vite 把 React 打包成靜態的 HTML/JS 檔後,Render 就只是負責把這些檔案送給來訪的瀏覽器。 | 需要真的跑一個 Node.js 伺服器 (例如 Next.js SSR) 隨時處於執行中狀態來產生網頁。 |
| 收費與資源 | 完全免費,資源消耗極低。 並且可以享受全球 CDN 的加速。 | 就算沒人訪問,伺服器也在空轉,不僅會消耗免費配額,超過還要收費。 |
| 適用情境 | 我們的 SPA 應用程式 (純 React / Vite 專案)。 | 需要 SSR (伺服器渲染) 的全端框架專案。 |
在 Render 的 Dashboard 選擇建立新的 "Static Site" 並連結您的 GitHub 專案後,最重要的是以下兩個設定:
Build Command (建置指令):
npm install && npm run build
告訴 Render 在部署前先安裝套件,並執行 Vite 的打包指令。
Publish Directory (發布資料夾):
dist
Vite 預設會將打包好的靜態檔案放在 dist 資料夾,設定這個屬性,Render 才知道該把哪個資料夾對外公開!
另外,別忘了在 Render 的 "Redirects/Rewrites" 設定中,將所有找不到的路由 (/*) 重新導向回 /index.html (Rewrite),這一步非常關鍵,否則前端換頁按 F5 重整時會直接跑出 404!

在Render控制台裡面,
Build Command與Publish Directory的區塊設定。
對於初次部署 Vite 專案的新手來說,這是一張非常有價值的踩坑地圖。
前後端都順利上雲端了!但如果您現在打開前端網頁,可能會發現畫面上什麼資料都沒有,打開 F12 還會看到滿滿的紅字。別慌,這是開發者必經的「CORS 跨網域」考驗,明天我們就來解決它!