如何在 Next.js 中使用除錯工具
本文檔說明如何透過完整的原始碼映射支援,使用 VS Code 除錯器、Chrome DevTools 或 Firefox DevTools 來除錯您的 Next.js 前端和後端程式碼。
任何可以附加到 Node.js 的除錯器也可用於除錯 Next.js 應用程式。您可以在 Node.js 除錯指南 中找到更多詳細資訊。
使用 VS Code 進行除錯
在專案根目錄建立一個名為 .vscode/launch.json
的檔案,內容如下:
注意:要在 VS Code 中使用 Firefox 除錯功能,您需要安裝 Firefox Debugger 擴充套件。
如果您使用 Yarn 或 pnpm,可以將 npm run dev
替換為 yarn dev
或 pnpm dev
。
在「Next.js: 除錯全端」配置中,serverReadyAction.action
指定了伺服器準備就緒時要開啟的瀏覽器。debugWithEdge
表示啟動 Edge 瀏覽器。如果您使用 Chrome,請將此值更改為 debugWithChrome
。
如果您更改了應用程式的啟動埠號,請將 http://localhost:3000
中的 3000
替換為您使用的埠號。
如果您從非根目錄執行 Next.js(例如使用 Turborepo),則需要將 cwd
新增到伺服器端和全端除錯任務中。例如:"cwd": "${workspaceFolder}/apps/web"
。
現在前往除錯面板(Windows/Linux 上按 Ctrl+Shift+D
,macOS 上按 ⇧+⌘+D
),選擇一個啟動配置,然後按 F5
或從命令面板中選擇 Debug: Start Debugging 來開始除錯會話。
在 Jetbrains WebStorm 中使用除錯器
點擊執行時配置的下拉選單,然後點擊 Edit Configurations...
。建立一個 JavaScript Debug
除錯配置,將 http://localhost:3000
設為 URL。根據您的喜好進行自訂(例如選擇除錯用的瀏覽器、儲存為專案檔案等),然後點擊 OK
。執行此除錯配置,所選瀏覽器應會自動開啟。此時,您應該有兩個處於除錯模式的應用程式:NextJS 節點應用程式和客戶端/瀏覽器應用程式。
使用瀏覽器 DevTools 進行除錯
客戶端程式碼
像往常一樣執行 next dev
、npm run dev
或 yarn dev
來啟動開發伺服器。伺服器啟動後,在您偏好的瀏覽器中開啟 http://localhost:3000
(或您的替代 URL)。
對於 Chrome:
- 開啟 Chrome 的開發者工具(Windows/Linux 上按
Ctrl+Shift+J
,macOS 上按⌥+⌘+I
) - 前往 Sources 標籤
對於 Firefox:
- 開啟 Firefox 的開發者工具(Windows/Linux 上按
Ctrl+Shift+I
,macOS 上按⌥+⌘+I
) - 前往 Debugger 標籤
在任一瀏覽器中,當您的客戶端程式碼執行到 debugger
語句時,程式碼執行將暫停,該檔案將出現在除錯區域。您也可以搜尋檔案來手動設定中斷點:
- 在 Chrome 中:Windows/Linux 上按
Ctrl+P
,macOS 上按⌘+P
- 在 Firefox 中:Windows/Linux 上按
Ctrl+P
,macOS 上按⌘+P
,或使用左側面板的檔案樹
請注意,搜尋時您的原始檔路徑將以 webpack://_N_E/./
開頭。
伺服器端程式碼
要使用瀏覽器 DevTools 除錯伺服器端 Next.js 程式碼,您需要將 --inspect
標誌傳遞給底層的 Node.js 程序:
小知識:使用
NODE_OPTIONS='--inspect=0.0.0.0'
以允許來自 localhost 之外的遠端除錯存取,例如在 Docker 容器中執行應用程式時。
如果您使用 npm run dev
或 yarn dev
,則應更新 package.json
中的 dev
腳本:
使用 --inspect
標誌啟動 Next.js 開發伺服器時,輸出將類似於:
對於 Chrome:
- 開啟新分頁並訪問
chrome://inspect
- 點擊 Configure... 確保列出兩個除錯埠
- 如果尚未存在,請新增
localhost:9229
和localhost:9230
- 在 Remote Target 部分尋找您的 Next.js 應用程式
- 點擊 inspect 開啟獨立的 DevTools 視窗
- 前往 Sources 標籤
對於 Firefox:
- 開啟新分頁並訪問
about:debugging
- 點擊左側邊欄的 This Firefox
- 在 Remote Targets 下找到您的 Next.js 應用程式
- 點擊 Inspect 開啟除錯器
- 前往 Debugger 標籤
伺服器端程式碼的除錯方式與客戶端類似。搜尋檔案時(Ctrl+P
/⌘+P
),您的原始檔路徑將以 webpack://{application-name}/./
開頭(其中 {application-name}
將根據您的 package.json
檔案替換為您的應用程式名稱)。
使用瀏覽器 DevTools 檢查伺服器錯誤
當您遇到錯誤時,檢查原始碼可以幫助追蹤錯誤的根本原因。
Next.js 會在錯誤覆蓋層上的 Next.js 版本指示器下方顯示一個 Node.js 圖示。點擊該圖示會將 DevTools URL 複製到剪貼簿。您可以在新瀏覽器分頁中開啟該 URL 來檢查 Next.js 伺服器程序。
在 Windows 上進行除錯
Windows 使用者在執行 NODE_OPTIONS='--inspect'
時可能會遇到問題,因為該語法在 Windows 平台上不受支援。為了解決這個問題,請安裝 cross-env
套件作為開發依賴項(使用 npm
和 yarn
時加上 -D
),並將 dev
腳本替換為以下內容:
cross-env
會設定 NODE_OPTIONS
環境變數,無論您使用的是哪個平台(包括 Mac、Linux 和 Windows),並讓您在不同裝置和作業系統上保持一致地進行除錯。
小知識:確保您的電腦上已停用 Windows Defender。此外部服務會檢查 每個讀取的檔案,據報導這會大大增加
next dev
的 Fast Refresh 時間。這是一個已知問題,與 Next.js 無關,但會影響 Next.js 的開發。
更多資訊
要了解更多關於如何使用 JavaScript 除錯器的資訊,請查看以下文件: