錯誤處理
本文件說明如何處理開發階段、伺服器端與客戶端的錯誤。
開發階段的錯誤處理
當 Next.js 應用程式在開發階段發生執行時期錯誤時,您會看到一個 錯誤覆蓋層。這是一個覆蓋網頁的模態視窗,僅在使用 next dev
透過 pnpm dev
、npm run dev
、yarn dev
或 bun dev
執行開發伺服器時可見,生產環境中不會顯示。修正錯誤後,覆蓋層會自動消失。
以下是錯誤覆蓋層的範例:
處理伺服器錯誤
Next.js 預設提供靜態 500 頁面來處理應用程式中發生的伺服器端錯誤。您也可以透過建立 pages/500.js
檔案來自訂此頁面。
應用程式中設置 500 頁面不會向使用者顯示具體錯誤資訊。
您還可以使用 404 頁面來處理特定執行時期錯誤,例如「檔案不存在」。
處理客戶端錯誤
React 的 錯誤邊界 (Error Boundaries) 是一種優雅的客戶端 JavaScript 錯誤處理方式,可讓應用程式的其他部分繼續運作。除了防止頁面崩潰外,它還允許您提供自訂的後備元件,甚至記錄錯誤資訊。
要在 Next.js 應用程式中使用錯誤邊界,您必須建立一個類別元件 ErrorBoundary
,並在 pages/_app.js
檔案中包裹 Component
屬性。這個元件將負責:
- 在錯誤發生後渲染後備 UI
- 提供重置應用程式狀態的方法
- 記錄錯誤資訊
您可以透過擴展 React.Component
來建立 ErrorBoundary
類別元件。例如:
ErrorBoundary
元件透過 hasError
狀態變數來追蹤錯誤。當 hasError
為 true
時,ErrorBoundary
元件會渲染後備 UI;否則會渲染子元件。
建立 ErrorBoundary
元件後,請在 pages/_app.js
檔案中導入它,並用它包裹 Next.js 應用程式中的 Component
屬性。
您可以在 React 文件中了解更多關於錯誤邊界 (Error Boundaries) 的資訊。
錯誤回報
要監控客戶端錯誤,可以使用 Sentry、Bugsnag 或 Datadog 等服務。