
- Node.js 教程
- Node.js - 首頁
- Node.js - 簡介
- Node.js - 環境設定
- Node.js - 第一個應用程式
- Node.js - REPL 終端
- Node.js - 命令列選項
- Node.js - 包管理器 (NPM)
- Node.js - 回撥函式概念
- Node.js - 上傳檔案
- Node.js - 傳送電子郵件
- Node.js - 事件
- Node.js - 事件迴圈
- Node.js - 事件發射器
- Node.js - 偵錯程式
- Node.js - 全域性物件
- Node.js - 控制檯
- Node.js - 程序
- Node.js - 應用程式擴充套件
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 緩衝區
- Node.js - 流
- Node.js - 檔案系統
- Node.js MySQL
- Node.js - MySQL 入門
- Node.js - MySQL 建立資料庫
- Node.js - MySQL 建立表
- Node.js - MySQL 插入資料
- Node.js - MySQL 查詢資料
- Node.js - MySQL 條件查詢
- Node.js - MySQL 排序
- Node.js - MySQL 刪除資料
- Node.js - MySQL 更新資料
- Node.js - MySQL 連線查詢
- Node.js MongoDB
- Node.js - MongoDB 入門
- Node.js - MongoDB 建立資料庫
- Node.js - MongoDB 建立集合
- Node.js - MongoDB 插入資料
- Node.js - MongoDB 查詢資料
- Node.js - MongoDB 查詢
- Node.js - MongoDB 排序
- Node.js - MongoDB 刪除資料
- Node.js - MongoDB 更新資料
- Node.js - MongoDB 資料限制
- Node.js - MongoDB 連線查詢
- Node.js 模組
- Node.js - 模組
- Node.js - 內建模組
- Node.js - 實用程式模組
- Node.js - Web 模組
- Node.js 有用資源
- Node.js - 快速指南
- Node.js - 有用資源
- Node.js - 討論
Node.js - 偵錯程式
對於較小的 Node.js 程式碼,您可以使用 `console.log()` 或 `console.debug()` 函式來間歇性地顯示訊息或變數的值以手動除錯程式碼。但是,如果 Node.js 程式碼變得更大更復雜,則手動方法無效。相反,我們可以在 Node.js 執行時使用內建偵錯程式。
考慮如下所示的簡單 Node.js 程式碼 (main.js) −
let marks = [34, 45, 98, 26, 51]; let total = 0; for (let i = 0; i <= marks.length; i++) { total += marks[i]; } var no = marks.length; console.log(total/no);
我們期望上述程式計算 5 名學生的平均成績。但是,當我們按如下方式執行它時,結果並非我們期望的那樣:
PS D:\nodejs> node main.js NaN
在 JavaScript 中,NaN 表示非數字。要追蹤此錯誤,讓我們使用 Node.js 偵錯程式。相反,使用以下命令執行程式:
PS D:\nodejs> node inspect main.js < Debugger listening on ws://127.0.0.1:9229/ca4aece6-308a-4979-8a32-734fe8ebbd0b < For help, see: https://nodejs.org/en/docs/inspector < connecting to 127.0.0.1:9229 ... ok < Debugger attached. < Break on start in a.js:1 > 1 let marks = [34, 45, 98, 26, 51]; 2 3 let total = 0; debug>
內建偵錯程式在 localhost 的 9229 埠啟動。偵錯程式會在程式碼的第一行中斷。
我們透過告訴偵錯程式轉到程式將執行的下一行來單步執行程式碼。Node.js 允許使用以下命令來使用偵錯程式:
序號 | 命令和描述 |
---|---|
1 | c 或 cont 繼續執行到下一個斷點或程式結束。 |
2 | n 或 next 移動到下一行程式碼。 |
3 | s 或 step 單步進入函式。預設情況下,我們只單步執行正在除錯的塊或範圍內的程式碼。 |
4 | o 單步退出函式。進入函式後,函式返回時偵錯程式會返回主檔案。 |
5 | pause 暫停正在執行的程式碼。 |
連續按“n”或“next”鍵來遍歷程式碼。在這個迴圈中,每次迭代都會更改兩個變數——total 和 i。讓我們為這兩個變數設定監視器。
debug> watch('total') debug> watch('i')
當您在除錯提示符前按“n”時,您可以在監視器下看到這兩個變數的瞬時值。
break in main.js:6 Watchers: 0: total = 0 1: i = 0 4 5 > 6 for (let i = 0; i <= marks.length; i++) { 7 total += marks[i]; 8 }
每次按下 next 鍵時,都會在偵錯程式中顯示 total 和 i 的變化值。
在最後一次迭代中,偵錯程式的狀態為:
Watchers: 0: total = 254 1: i = 5 4 5 > 6 for (let i = 0; i <= marks.length; i++) { 7 total += marks[i]; 8 }
下次,total 的值將變為 NaN,因為迴圈試圖超出陣列範圍。
Watchers: 0: total = NaN 1: i = 6 4 5 > 6 for (let i = 0; i <= marks.length; i++) { 7 total += marks[i]; 8 }
因此,我們可以知道錯誤在於 for 迴圈的構成。內建偵錯程式有助於識別錯誤。
您還可以啟用 VS Code 中的 Node.js 程式碼除錯。按 ctrl+shift+p 開啟命令面板,然後選擇“附加 Node.JS 程序”。然後從“執行”選單啟動程式除錯。它允許您在程式碼中執行“步過”、“步入”和“步出”操作以追蹤程式流程。您還可以對一個或多個變數設定監視器,以便在程式逐行執行時跟蹤其值。