iT邦幫忙

2026 iThome 鐵人賽

DAY 14
1

本章目標

讀完這一章,你會知道如何在 Lovable 專案出錯時,系統化地找出原因,而不是反覆要求 AI「再修一次」。你會學會區分 build error、runtime error、preview(預覽) issue、unexpected behavior、edge function error、auth(驗證)problem、payment problem 和 integration failure,並用 Plan Mode、Code Mode、browser testing、logs、direct function calls、revert 和小步重建來恢復穩定。

這章的重點不是背錯誤訊息。真正重要的是 debug workflow(工作流):先重現,再隔離,再理解,再修正,再驗證,再防回歸。

為什麼這一章重要

Lovable 讓你做功能很快,所以錯誤也可能被很快累積。

常見情境:

  • Preview(預覽) 變白畫面。
  • Build failed。
  • 登入後被導到錯頁。
  • Dashboard(儀表板) 不顯示資料。
  • Paddle checkout(結帳) 可以打開,但權益沒有解鎖。
  • Resend email 沒寄出。
  • AI summary 轉圈後失敗。
  • RLS(Row Level Security,列層級安全) policy 擋住合法使用者。
  • Lovable 修了兩次,但錯誤換一種形式回來。

如果你每次都只說:

請修正這個問題。

Lovable 可能會做出 quick fix,但不一定解決 root cause。更糟的是,它可能為了消除錯誤而改壞別的功能。

Debug 的目標不是讓錯誤消失。Debug 的目標是理解錯誤為什麼發生,並用最小修改修掉真正原因。

思考模型:除錯是縮小未知範圍

Debug 時,不要把整個 app 當成黑盒子。

你要把問題分層:

建置層:程式能不能編譯?
執行層:應用程式開啟後會不會當機?
使用者介面層:使用者能不能看到和操作?
狀態層:身分驗證、載入、篩選、角色是否正確?
網路層:請求是否送出,回應是否正常?
後端層:Edge Function 是否正確執行?
資料層:資料庫是否有正確資料?
安全層:RLS 和權限是否允許正確角色?
整合層:Paddle、Resend、AI、Slack 等外部服務是否成功?

每次 debug,你的任務是把問題從「不知道哪裡壞」縮小成「這一層、這個行為、這個 input、這個錯誤」。

除錯基本流程

1. 重現:重現問題
2. 觀察:收集錯誤、紀錄、截圖、網路請求和測試輸出
3. 隔離:判斷問題在哪一層
4. 解釋:讓 Lovable 說明根本原因
5. 修正:用最小修改修正
6. 驗證:用正確測試確認
7. 預防:加入回歸測試或記錄注意事項

這個流程比「一直重試」慢一點,但穩定很多。

步驟 1:先描述 expected vs actual

Debug 提示詞要先講清楚你期待什麼、實際發生什麼。

弱提示詞:

儀表板壞了,請修好。

好提示詞:

LaunchNote 儀表板不再顯示更新日誌項目。

預期行為:
- 登入後,儀表板應列出目前使用者所屬專案的項目。
- 專案 A 在資料庫中有兩筆項目。

實際行為:
- 儀表板已載入,但項目表格是空的。
- 畫面沒有顯示錯誤訊息。

請先用 Plan Mode 調查。
請判斷這是使用者介面狀態、查詢、身分驗證、RLS 或缺少資料的問題。
先不要修改程式碼。

這樣 Lovable 可以先分析,而不是直接亂修。

步驟 2:Try to Fix 可以用,但不要迷信

Lovable Troubleshooting 文件建議先用 Try to Fix,再逐步診斷 build error 與非預期行為

圖 14-1:Try to Fix 適合處理明確錯誤的第一輪;若沒有解決,就應停止重試,改用 logs、重現步驟與 root-cause 分析縮小範圍。

Lovable 的 troubleshooting 文件建議,build error 出現時可以先用 Try to Fix。這通常是最快第一步,因為 Lovable 能掃 logs、找語法錯誤、缺 dependency 或明顯型別問題。

但 Try to Fix 不是萬能。

適合 Try to Fix:

  • 明確 build error。
  • 語法錯誤。
  • import path 錯。
  • 缺少 dependency。
  • 小型 runtime crash。

不適合一直 Try to Fix:

  • 權限邏輯錯。
  • 付款狀態不對。
  • RLS(Row Level Security,列層級安全) 擋錯人。
  • AI 或 email 外部服務沒有回應。
  • 同一個錯誤修了兩次又回來。

如果 Try to Fix 失敗兩次,切換策略:

停止嘗試自動修正。
請分析目前已經嘗試過哪些方法。
說明最可能的根本原因,並提出更安全的除錯計畫。
先不要修改程式碼。

步驟 3:用 Plan Mode 做 root cause analysis

Lovable Plan 內容將發布、所有權、備份與風險拆成可審查步驟

圖 14-2:複雜問題先在 Plan Mode 拆假設、依賴與證據,再決定修正範圍;這能避免把 symptom 當 root cause。

Plan Mode 很適合 debug,因為它可以先調查、不改 code。

提示詞:

請使用 Plan Mode 調查這個問題。

問題:
Paddle 在測試模式下結帳成功,但回到儀表板後 Pro 功能仍維持鎖定。

預期行為:
- 測試結帳成功後,使用者的訂閱狀態應變成 active。
- Pro 專屬功能應解鎖。

實際行為:
- 付款看起來成功。
- 儀表板仍顯示免費方案。

請調查:
- 是否收到付款事件。
- 是否儲存訂閱狀態。
- 權益邏輯是否讀取正確欄位。
- 使用者介面是否使用過期狀態。
- 紀錄或網路請求中是否有錯誤。

請回傳:
- 根本原因假設。
- 所需證據。
- 最小且安全的修正方式。
- 驗證計畫。

先不要修改程式碼。

這個提示詞把問題拆成 payment event、database、entitlement(權益)logic、UI(使用者介面)state 和 logs。Lovable 會更容易找到真正位置。

步驟 4:用 Code Mode 引用精確檔案

如果你知道錯誤在某個檔案附近,Code Mode 可以讓你引用檔案和行號給 Lovable。

範例:

我在 Code Mode 的以下位置找到權益邏輯:
@src/lib/entitlements.ts

請檢查訂閱狀態相關邏輯。

問題:
- canceled 使用者應保留存取權限直到 current_period_end。
- 目前他們會立即失去存取權限。

請先說明目前邏輯。
接著提出最小的變更方式。
不要編輯無關檔案。

這種 提示詞比「修訂閱取消」精準很多。它讓 Lovable 聚焦一個檔案、一段邏輯、一個 expected behavior。

步驟 5:Blank screen 要先看 console 和最近變更

Lovable Browser testing 文件說明可觀察 screenshots、console logs、network requests 與不同螢幕尺寸

圖 14-3:空白頁或互動失敗要同時看畫面、console 與 network;三者能區分 render error、API failure 與 route/auth 問題。

白畫面通常有幾種原因:

  • Build error。
  • JavaScript runtime error。
  • import 或 dependency 壞掉。
  • routing 問題。
  • auth(驗證)state 導致 redirect loop。
  • vite config 或 security headers 問題。
  • 某個 component crash。

提示詞:

上次變更後,預覽畫面變成空白白色畫面。

請先調查,再決定是否修改。

檢查:
- 建置錯誤。
- 瀏覽器主控台錯誤。
- 最近修改的檔案。
- 路由和身分驗證守衛的行為。
- 元件是否在渲染時拋出錯誤。
- vite.config.ts 或安全性標頭是否遭到修改。

請回傳:
- 最可能的根本原因。
- 證據。
- 最小修正方式。

不要做大範圍重構。

如果你有 console error,直接貼上。Lovable debugging 文件也建議把 DevTools console 內容提供給 AI。

以下是主控台錯誤:
[貼上錯誤]

請用簡單易懂的方式說明其含義。
找出最可能造成問題的檔案或元件。
提出最小修正方式。

步驟 6:Edge Function 錯誤先查 logs 和 secrets

Edge Function 錯誤常見原因:

  • Secret 沒設定。
  • 環境變數名稱錯。
  • API key(API 金鑰) 過期。
  • request payload 格式錯。
  • RLS(Row Level Security,列層級安全) 或 service role 使用錯。
  • 外部 API 回傳錯誤。
  • CORS 或 auth(驗證)header 問題。

Troubleshooting 文件建議 Edge Functions 出錯時看 Cloud tab -> Logs,並確認 secrets 和 environment variables。

提示詞:

請對 AI 摘要 Edge Function 進行除錯。

症狀:
- 點擊「產生摘要」後顯示錯誤。
- 使用者介面顯示「無法產生摘要」。

請:
- 檢查 Edge Function 的後端紀錄。
- 驗證必要的 Secrets 和環境變數。
- 使用範例酬載直接呼叫 Edge Function。
- 判斷問題出在輸入驗證、AI Connector、額度、速率限制、資料庫寫入或前端處理。

找出失敗層級前,不要修改程式碼。

如果 direct call 成功但 UI(使用者介面)失敗,問題在 frontend(前端)wiring。如果 direct call 失敗,問題在 backend(後端)或 external service。

步驟 7:Email 沒寄出,要追事件鏈

Email failure 不一定是 Resend 壞掉。事件鏈可能在任何一段斷掉:

使用者操作
-> 後端觸發
-> 信件酬載
-> 呼叫 Resend API
-> Resend 接受請求
-> 投遞/退信/拒絕

提示詞:

請對團隊邀請的 Resend 信件工作流程進行除錯。

預期行為:
- 管理員邀請團隊成員時,應用程式應建立邀請紀錄並寄送信件。

實際行為:
- 儀表板出現邀請紀錄。
- 收件者沒有收到信件。

請調查:
- 是否呼叫信件函式。
- 傳送給 Resend 的酬載。
- Resend 回傳成功或錯誤。
- 寄件網域或寄件者地址是否可能遭到拒絕。
- 是否記錄失敗。

信件發送失敗時,不要阻擋邀請紀錄建立。

這裡要看出一個產品判斷:email 失敗不一定要讓核心操作失敗。Invitation record 可以先建立,再提示 email failure,讓 admin 重寄。

步驟 8:Auth(驗證) 和 RLS(Row Level Security,列層級安全) 問題要分開

Auth(驗證) 和 RLS(Row Level Security,列層級安全) 常被混在一起。

Auth(驗證) 問題是:

  • 使用者是否登入?
  • session 是否存在?
  • token 是否過期?
  • route guard 是否正確?

RLS(Row Level Security,列層級安全) 問題是:

  • 已登入使用者能不能讀這筆資料?
  • policy 是否允許?
  • membership 是否存在?
  • role 是否正確?

提示詞:

請把身分驗證和 RLS 分開,對這個存取問題進行除錯。

問題:
使用者 A 成功登入,但看不到專案 A 的項目。

請確認:
- 使用者 A 是否通過身分驗證?
- Session 是否包含預期的 User ID?
- 使用者 A 是否有專案 A 的 project_memberships 資料列?
- 查詢是否使用正確的 project_id 篩選?
- RLS 是否允許使用者 A 選取專案 A 的項目?
- 是否有資料庫或網路錯誤?

請回傳表格:
- 層級。
- 證據。
- 通過或失敗。
- 下一步操作。

找出失敗層級前,不要修改 Policy。

這種表格化排查能避免 Lovable 直接改 RLS(Row Level Security,列層級安全),結果把資料放太寬。

步驟 9:Persistent errors 要問「試過什麼」

如果錯誤一直回來,先停下來。

提示詞:

這個問題經過多次修正後仍然存在。

請摘要:
- 目前已嘗試哪些解決方案。
- 修改了哪些檔案。
- 哪些錯誤已改變,哪些維持不變。
- 哪些假設可能有誤。
- 可避開脆弱路徑的不同做法。

先不要編輯程式碼。

這可以幫你避免在同一條錯誤路徑上繼續加補丁。

也可以要求 Lovable 用簡單語言解釋:

請用簡單易懂的方式說明這個錯誤為何發生。
接著說明之前的修正為何沒有解決根本原因。

如果 AI 也說不清楚,通常代表需要更小的 reproduction 或 rollback。

步驟 10:Revert 不是失敗,是控制風險

Lovable 支援回到較早版本。當一串修正把系統越修越亂時,revert 往往比繼續 patch 更便宜。

適合 revert 的情境:

  • 同一錯誤修了多次仍失敗。
  • 新功能破壞多個既有功能。
  • AI 做了大範圍 unrelated changes。
  • 你已經不確定目前 code state。
  • 要改用更小步驟重做。

Revert 後要告訴 Lovable:

我已把專案還原到付款權益變更前的穩定版本。

請用更小的步驟重新實作功能:
1. 只新增訂閱狀態儲存。
2. 驗證測試結帳後狀態會更新。
3. 新增權益共用函式。
4. 使用 Edge Tests 驗證共用函式。
5. 更新使用者介面的功能門檻。

不要一次實作所有步驟。

Revert 的價值在於重新取得穩定基線。

步驟 11:Fragile updates 要先設 guardrails

Auth(驗證)、payments、RLS(Row Level Security,列層級安全)、migration、Edge Functions 都屬於 fragile updates。這些地方不要用寬鬆 提示詞。

提示詞:

這次變更會影響關鍵的付款和權益路徑。
請謹慎執行。

編輯前:
- 檢查相關檔案。
- 找出相依項目。
- 說明目前流程。
- 列出風險。
- 提出最小變更。

編輯期間:
- 不要修改無關元件。
- 除非必要,不要修改資料庫 Schema。
- 不要放寬 RLS Policy。
- 保留既有測試模式行為。

編輯後:
- 使用既有付款測試情境驗證。
- 建議回歸測試。

任務:
請修正 canceled 訂閱的處理方式,讓使用者在 current_period_end 前仍保有存取權。

這種 guardrail 提示詞不只是禮貌提醒。它會改變 Lovable 的工作節奏,讓它先理解再動手。

步驟 12:除錯後要留下紀錄

修完大 bug 後,請 Lovable 總結:

請摘要這次除錯過程。

請包含:
- 原始症狀。
- 根本原因。
- 修改的檔案。
- 套用的修正。
- 執行的驗證。
- 新增或建議的回歸測試。
- 所有後續風險。

請寫成簡短的工程說明,讓我可以儲存到 Project Knowledge 或更新日誌。

這份紀錄很有用。下次類似問題發生時,你可以把它放進 Knowledge 或 troubleshooting notes,讓 Lovable 不要重走錯路。

提示詞範例

範例 1:根因調查

請用 Plan Mode 調查這個問題。

預期行為:
[應該發生的行為]

實際行為:
[實際發生的行為]

背景:
[最近的變更、受影響功能、測試帳號、環境]

請找出:
- 可能失敗的層級。
- 所需證據。
- 最可能的根本原因。
- 最小且安全的修正方式。
- 驗證計畫。

先不要修改程式碼。

為什麼有效:

  • 它先分析,不直接修。
  • 它分層定位問題。
  • 它把修正和驗證綁在一起。

範例 2:空白畫面調查

預覽畫面是空白白色畫面。

請調查:
- 建置錯誤。
- 瀏覽器主控台錯誤。
- 最近修改的檔案。
- 路由和身分驗證守衛。
- 元件渲染當機。
- vite.config.ts 或安全性標頭變更。

請回傳:
- 證據。
- 可能的根本原因。
- 最小修正方式。

不要做大範圍重構。

為什麼有效:

  • 它處理白畫面常見原因。
  • 它避免 Lovable 大範圍重寫。
  • 它要求 evidence。

範例 3:Edge Function 除錯

請對這個 Edge Function 進行除錯:
[函式名稱]

症狀:
[使用者看到的內容]

請:
- 檢查函式紀錄。
- 驗證必要的 Secrets 和環境變數。
- 使用範例酬載直接呼叫函式。
- 判斷問題出在輸入、身分驗證、資料庫、外部 API 或前端處理。
- 建議最小修正方式。

找出失敗層級前,不要修改程式碼。

為什麼有效:

  • 它把 backend(後端)從 UI(使用者介面)隔離。
  • 它要求 logs 和 direct call。
  • 它避免亂改 frontend(前端)。

範例 4:持續錯誤重置

這個問題經過多次修正後仍然存在。

請摘要:
- 已嘗試的方法。
- 修改的檔案。
- 仍然存在的錯誤。
- 可能有誤的假設。
- 不同的實作方式。
- 還原到穩定版本是否更安全。

先不要編輯程式碼。

為什麼有效:

  • 它讓 Lovable 停止補丁循環。
  • 它暴露錯誤假設。
  • 它提供 revert 或 alternate path 的判斷。

範例 5:除錯紀錄摘要

請摘要這次已解決的除錯過程。

請包含:
- 症狀。
- 根本原因。
- 修正方式。
- 修改的檔案。
- 驗證證據。
- 新增或建議的回歸測試。
- 後續風險。

請寫成精簡的工程說明。

為什麼有效:

  • 它保存團隊知識。
  • 它讓未來 debugging 更快。
  • 它可以轉進 Knowledge 或 release notes。

實作練習

替 LaunchNote 演練三種 debug 情境。

Round 1: Blank dashboard(儀表板)

假設 dashboard(儀表板) 不顯示 entries。使用 Pattern 1 調查。

預期結果:

  • 知道是 UI(使用者介面)、query、auth(驗證)、RLS(Row Level Security,列層級安全) 還是 data 問題。
  • 有明確 evidence。
  • 沒有一開始就改 code。

Round 2: AI summary failure

假設 AI summary 失敗。使用 Pattern 3。

預期結果:

  • 有 edge function logs。
  • 有 direct call result。
  • 知道是 input、AI connector、credits、rate limit、database 或 frontend(前端)問題。

Round 3: Persistent payment bug

假設 Paddle test checkout(結帳) 成功但 Pro features 沒解鎖,且已修兩次。使用 Pattern 4。

預期結果:

  • 知道過去嘗試了什麼。
  • 知道是否應 revert。
  • 有更小步驟重做計畫。

常見錯誤

錯誤 1:一直說 fix it

當問題簡單時可以。當問題複雜時,這會讓 Lovable 猜測並產生補丁。

錯誤 2:不提供 expected behavior

AI 不一定知道你的產品規則。你要說清楚 expected 和 actual。

錯誤 3:沒有看 logs

Edge Functions、Email、AI、payment webhook(事件回呼)都需要 logs。沒有 logs 只是在猜。

錯誤 4:把 auth(驗證)和 RLS(Row Level Security,列層級安全) 混在一起

登入成功不代表有資料權限。資料被擋不代表登入失敗。

錯誤 5:修 symptom 不問 root cause

加 null check 可能讓錯誤消失,但資料為什麼是 null 才是重點。

錯誤 6:不敢 revert

Revert 是控制風險,不是退步。當 code state 失控,回到穩定點通常更快。

錯誤 7:修完沒有驗證

Debug 沒有結束於「改了」。Debug 結束於「證據顯示問題已修正,且沒有破壞關鍵流程」。

When to stop and rethink

遇到以下情況,請停止直接修:

  • 同一問題已修兩次仍存在。
  • 每次修正都造成新的錯誤。
  • Lovable 開始改 unrelated files。
  • 你看不懂目前 code state。
  • 問題涉及付款、RLS(Row Level Security,列層級安全)、資料遷移或 production(正式上線)data。
  • 錯誤可能來自外部服務設定,而不是 code。

這時候應該切到 Plan Mode、整理 attempted fixes、考慮 revert,或把問題拆成更小 reproduction。

上線前檢查清單

  • [ ] Debug 提示詞是否包含 expected 和 actual?
  • [ ] 是否先重現問題?
  • [ ] 是否收集 console、network、logs、test output 或 screenshots?
  • [ ] 是否分清 build、runtime、UI(使用者介面)、state、network、backend(後端)、data、security、integration 層?
  • [ ] Try to Fix 失敗後是否停止重複嘗試?
  • [ ] 複雜問題是否先用 Plan Mode 分析?
  • [ ] Code Mode 是否用於引用精確檔案或行號?
  • [ ] Edge Function 問題是否看 logs 並 direct call?
  • [ ] Auth(驗證) 和 RLS(Row Level Security,列層級安全) 是否分開排查?
  • [ ] Payment 問題是否在 test mode 下重現?
  • [ ] Email 問題是否追完整事件鏈?
  • [ ] Persistent error 是否整理 tried fixes?
  • [ ] 是否考慮 revert 到穩定版本?
  • [ ] Fragile update 是否先設 guardrails?
  • [ ] 修正後是否用第 13 章的方法驗證?
  • [ ] 重要 bug 是否留下 engineering note 或 regression test?

延伸閱讀

名詞解釋與延伸提問

  • Debug:找出錯誤原因並驗證修復的過程。
  • Console log:瀏覽器或後端執行時輸出的診斷訊息。
  • Network request:前端與後端或第三方服務之間的 HTTP 呼叫。
  • Minimal reproduction:用最小案例重現問題,降低調查複雜度。

如何問延伸問題

讀完本章後,建議用自己的專案情境繼續追問 Lovable 或本書作者:

  • 「請根據我的專案,重寫本章的檢查清單。」
  • 「我的目前版本最可能在哪三個地方失敗?」
  • 「請把本章流程改成我下一次可以直接貼上的提示詞。」
  • 「如果我要在兩天內完成 V1,哪些範圍應該先刪掉?」

嗨!我是 Wolke,曾任 Google Developer Expert(GDE,2019–2023)LINE API Expert。我熱衷於研究 AI Agent、n8n 自動化工作流及全端開發架構,致力於將 AI 技術轉化為實際的生產力工具。

如果你喜歡這篇文章,歡迎透過以下方式與我交流,獲取更多技術實戰內容:

📚 技術著作《實用的 Gemini API 開發點子書》,帶你運用 Gemini App、Google AI Studio、Gemini CLI 與 Antigravity IDE,打造 AI Agent 與實用產品。

📝 技術部落格:歡迎追蹤我的 Medium,我會持續分享 Agentic Automation、架構設計與實際開發的踩坑心得。

🎤 技術講座:我持續受邀至技術社群及研討會,分享 AI Agent、自動化工作流、DevOps 與全端開發實戰。曾於 2026 年 6 月 26 日的 DevOpsDays Taipei 2026 主講「不再只是寫腳本!讓 AI 代理人成為你的 SRE 最佳夥伴」工作坊。

如果你的企業、社群或學校正在尋找相關主題講者,歡迎私訊與我聯繫、洽談講座合作!

🎁 免費送 Lovable 額度給讀者!

我每個月會開放 10 個名額,每人 50 點 Lovable 額度,讓大家實際動手打造自己的網站或 App。

參加方式:

  1. 訂閱本系列文章
  2. 分享任一篇系列文章
  3. 私訊分享截圖及你的 Lovable 帳號 Email

確認後,我會邀請你加入 Lovable workspace 並設定 50 點額度。名額有限,送完為止!


上一篇
第 13 章:測試與驗證
下一篇
第 15 章:安全與治理
系列文
Lovable: 地球上最強的 AI 生成全端網站Agentic開發實戰16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言