本文介绍了从 Node.js 6.3 版本开始支持的内置调试功能。通过添加 --inspect 或 --inspect-brk 参数启动 Node 进程,可连接 Chrome 浏览器进行代码调试。文章详细演示了基础调试流程,并提供了在 Mocha 测试框架中启用调试的具体命令示例,帮助开发者高效排查 Node.js 应用问题。
Node.js 内置调试功能概述
自 Node.js 6.3 版本起,Node 环境已原生支持类似 node-inspect 的调试功能。只需在执行 JavaScript 代码时添加 --inspect 参数,即可利用 Chrome 浏览器进行代码调试。
本文演示所使用的工具环境如下:
- Node.js v9.5.0
- Chrome 64
基础调试流程演示
首先准备待调试的代码。若仅为学习目的,可使用以下测试代码:
var objectRegExp = /^\[object (\S+)\]$/;
function gettype(obj) {
var type = typeof obj;
if (type !== 'object') {
return type;
}
// inspect [[Class]] for objects
return toString.call(obj)
.replace(objectRegExp, '$1');
}
gettype({})
gettype(function(){})
运行该代码时,需附加 --inspect-brk 参数。
node --inspect-brk a.js
系统将输出如下提示信息:
Debugger listening on ws://127.0.0.1:9229/84960765-5abc-4236-a7c6-924f99c34ed7
打开浏览器,在地址栏输入:
chrome://inspect/#devices
页面显示如下内容:
Remote Target
#LOCALHOST
Target (v9.5.0)
a.js
file:///Users/lcj/Documents/github/express/a.js
inspect
点击最后一行的 inspect 链接,即可弹出新的调试窗口。此时代码已加载至 Chrome 调试器中,在执行命令的控制台上可见:
Debugger attached.
现在,可以通过点击调试器内的 Run、Step、Step Into 等按钮进行调试操作。
Mocha 测试用例调试方法
对于未直接通过 Node 执行的代码,例如使用 Mocha 运行的测试用例,该如何处理?Mocha 同样支持这些选项。以 Express 使用 Mocha 进行单元测试为例,可通过以下命令进行调试:
mocha --require test/support/env --reporter spec --bail --check-leaks --no-exit test/app.router.js --inspect-brk -g 'should decode correct params'