- 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://node.org.cn/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 进程”。然后从“运行”菜单启动程序调试。它允许您在代码中执行“步过”、“步入”和“步出”操作以追踪程序流程。您还可以对一个或多个变量设置监视器,以便在程序逐行执行时跟踪其值。