為什麼昨天還好好的,今天突然整個網站大當機?
當你順利把專案推上 Vercel,並且綁定了超帥的專屬網域後,你可能會覺得自己已經天下無敵了。
隔天,你發現網頁上有個錯字,於是你在自己的電腦上改好了,開心地在終端機輸入:
git commit -m "修正錯字"
git push
結果五分鐘後,你的客戶打電話來狂飆:「為什麼網站點進去變成一片白畫面?!」 你嚇得趕快登入 Vercel 後台,發現最新的一筆部署紀錄上面亮著一顆大大的「紅燈 (Build Failed)」。
這就是在現代 DevOps (開發與維運一體化) 中最常遇到的噩夢。 我們在第二章學過的魔法:CI/CD (持續整合 / 持續部署)。當你按下 Push 時,Vercel 會自動幫你打包上線。 但這把雙面刃的缺點是:「如果你 Push 了有問題的程式碼,你的網站就會在雲端上當眾死亡。」
這時候你該怎麼辦?
救命神技第一招:Vercel 的「時光倒流 (Rollback)」
遇到線上大當機,第一條鐵則:「先恢復原狀讓客人能用,再來慢慢抓蟲!」 不要在壞掉的線上環境慢慢修改程式碼,每一秒鐘都在流失金錢。
Vercel 提供了一個讓傳統工程師羨慕到流口水的功能:一秒回滾 (Instant Rollback)。
- 登入 Vercel 後台,點進你的專案。
- 切換到上方的 Deployments (部署紀錄) 標籤。
- 這裡會列出你過去每一次 Push 的紀錄。最上面那個亮紅燈的,就是你剛剛搞砸的那一次。
- 往下看,找到上一筆 「綠色勾勾 (成功)」 的紀錄。
- 點擊該筆紀錄最右邊的三個點
...。 - 選擇 「Assign Custom Domain (指派自訂網域)」 或 「Promote to Production (提升為正式機)」 (根據 Vercel 改版可能會有不同名詞,意思就是讓這個舊版本重新上線)。
- 不用一秒鐘,你的網站瞬間變回了昨天那個雖然有錯字、但至少能正常運作的版本!
客戶開心了,老闆不罵了。這時候你就可以安心地回到自己的電腦前,開始當偵探。
為什麼會失敗?學會看懂 Vercel 的 Build Logs
為什麼在你的電腦 (localhost) 上跑得好好的,推上 Vercel 就爆炸?
最常見的原因有兩個:
- 忘記設定環境變數:你在本機的
.env加了新的資料庫密碼,但忘記去 Vercel 後台新增。 - TypeScript / ESLint 檢查沒過:Vercel 的把關非常嚴格。如果你的程式碼裡面有變數宣告了卻沒有使用,或是型別寫錯了,雖然你的電腦會「睜一隻眼閉一隻眼」讓你跑,但 Vercel 的雲端機器人會直接把你踢退!
Vibe Prompt 除錯法:讓 AI 幫你看紅字
不要自己去猜!點開 Vercel 那筆失敗紀錄的 Build Logs,你會看到一大坨黑底白字(混雜著紅字)的訊息。 把它全部複製下來,丟給 Cursor 的 AI:
【Vercel 部署失敗除錯 Prompt】 我將專案 Push 到 Vercel 時發生了 Build Failed。 這是 Vercel 的完整 Build Logs:
[把剛剛複製的 Log 貼在這裡]請問失敗的具體原因是什麼?是我忘了設定環境變數?還是語法檢查出錯? 請告訴我該如何修改程式碼,讓我能夠順利通過 Vercel 的編譯。
AI 通常會瞬間抓出兇手:「在你的 app/page.tsx 第 45 行,你有一個 user_id 沒有定義型別,導致 TypeScript 報錯被 Vercel 攔截。」
照著 AI 的指示改好,再 Push 一次,綠燈亮起!
終極大魔王:Git 衝突 (Merge Conflict)
當你開始跟別人一起合作(或是你自己換了一台筆電工作),你會遇到 Git 世界裡最可怕的怪獸:衝突 (Conflict)。
情境是這樣的:
你昨天在公司的電腦,把首頁的按鈕改成了「紅色」,然後 Push 到 GitHub。
今天你在家裡用筆電,忘記先 git pull 把昨天公司改的最新進度抓下來,就直接打開專案,把首頁的同一個按鈕改成了「藍色」。
當你滿心歡喜地輸入 git push 時... 砰!
終端機噴出紅字:Merge conflict in src/app/page.tsx
這代表 GitHub 崩潰了。它不知道這個按鈕到底應該是昨天公司的「紅色」,還是今天家裡的「藍色」。所以它拒絕了你的上傳,並要求你自己決定。
如何解決衝突?Cursor 的神級輔助
如果你打開那個發生衝突的檔案 page.tsx,你會看到非常可怕的亂碼:
<<<<<<< HEAD
<button class="bg-blue-500">藍色按鈕 (家裡改的)</button>
=======
<button class="bg-red-500">紅色按鈕 (公司改的)</button>
>>>>>>> origin/main
在以前,工程師要手動把那些 <<<< 跟 ==== 刪掉,非常容易把程式碼弄壞。
但在 Cursor IDE 中,當你點開這個檔案,畫面上會出現極度貼心的「按鈕選項」:
- Accept Current Change (保留目前家裡改的藍色)
- Accept Incoming Change (保留公司改的紅色)
- Accept Both Changes (兩個按鈕都要)
你只要輕鬆地點擊其中一個按鈕,Cursor 就會瞬間幫你把那些亂碼清乾淨,合併成完美的程式碼!
接著,你只要再次執行:
git add .
git commit -m "解決衝突"
git push
衝突解除!危機化解!
結語:DevOps 大師之路
經過這五章的洗禮,你已經不僅僅是一個會寫程式的「碼農」了。 你掌握了現代軟體工業的標準配備:Git 版本控制、GitHub 雲端備份、Vercel 自動化部署、自訂網域綁定、以及線上災難救援機制。
有了這些武器,你開發的不再是只能在自己電腦上孤芳自賞的玩具,而是隨時能夠面對千萬流量、商業級別的強大產品。 恭喜你完成本系列的部署課程!準備好向全世界大聲宣佈你的網站上線了嗎?