简述如何调试 Node.js 程序?
Node.js 调试手段多样,从最简单的 console 到基于 V8 Inspector 的完整断点调试都有。
来源整理自:vue3js.cn 面试官系列
1. 简述
- 日常调试:
console.log/console.error打印变量。 - 集成调试:在启动参数加
--inspect/--inspect-brk,由 Chrome DevTools 或 VS Code 连接。 - 单元测试:
node:test、Mocha、Jest 等在测试用例中调用断点 API。 - 进程级:
node --inspect默认监听 9229 端口,可远程调试容器或服务器。
2. 背景知识
Node.js 基于 V8,V8 提供了 Inspector 协议,因此可以通过任何支持该协议的客户端(Chrome、VS Code、WebStorm 等)以断点方式调试 Node.js 进程。
3. 解析
(1)使用内置调试器
Node.js 自带了命令行调试器。可以在启动程序时加上 --inspect 或 --inspect-brk 标志。
--inspect:启动程序并监听调试器连接,程序正常执行,等待调试器连接。--inspect-brk:启动程序,在第一行代码处暂停执行,等待调试器连接。
连接调试器:可以使用 Chrome 浏览器调试。打开 Chrome 浏览器,访问 chrome://inspect,在页面中可以看到可调试的 Node.js 进程,点击 "inspect" 即可打开调试界面,该界面类似于 Chrome 开发者工具,可进行断点设置、单步执行、查看变量等操作。
(2)使用 VS Code 调试
创建 launch.json 文件:在 VS Code 中打开 Node.js 项目,点击调试面板,选择创建 launch.json 文件,选择 Node.js 环境,VS Code 会自动生成一个基本的调试配置文件。
配置调试:可以根据需要修改 launch.json 文件,如指定要调试的文件、传递的参数等。
启动调试:点击调试面板中的绿色三角形按钮,VS Code 会启动 Node.js 程序并进入调试模式,可在代码中设置断点,进行单步调试、查看变量等操作。
(3)日志调试
使用 console.log():这是最基本的调试方法,在代码中适当位置添加 console.log() 语句,输出变量的值、程序执行的步骤等信息,通过查看控制台输出了解程序的运行情况。
使用 console.error():用于输出错误信息,方便在调试时快速定位错误。
(4)使用第三方调试工具
Node Inspector:是一个独立的调试工具,提供了类似于 Chrome 开发者工具的调试界面。可以通过 npm 安装,安装后使用命令启动调试会话,然后在浏览器中访问调试界面进行调试。
补充
补充:
launch.json最小配置与调试技巧。
// .vscode/launch.json
{
"type": "node",
"request": "launch",
"name": "Run & Debug",
"program": "${workspaceFolder}/src/index.js",
"env": { "NODE_ENV": "development" },
"runtimeArgs": ["--napi-modules", "-r", "dotenv/config"]
}
- 远程调试:
node --inspect=0.0.0.0:9229 server.js,再通过 SSH 端口转发把 9229 转到本地。 - 在源码中加入
debugger;语句,会让--inspect-brk自动在该行停下,效果类似断点。 - 生产环境慎用
--inspect,因为默认绑定 127.0.0.1 的端口对外开放时会暴露调试能力。



