-
console.log 就不用说了。
-
debugger 不推荐使用,因为:
使用繁琐,需手动打点。
若忘记删除 debugger,还会引起性能问题。 -
node-inspector 已经退出历史舞台。[email protected] 以后内置了一个调试器,可以结合 Chrome DevTools 使用,而且比 node-inspector 更强大。
下面就讲讲 Chrome DevTools 的用法。
-
NIM。NIM(Node Inspector Manager)是一个 Chrome 插件,可以帮助我们快捷地打开 DevTools,也可以设置自动发现并打开 DevTools。
-
inspect-process
npm i inspect-process -g inspect app.js
-
process._debugProcess
- 通过 ps 命令或者 pgrep -n node 查看当前启动的 Node.js 进程的 pid,例如:53911。
- 打开新的终端,运行:
node -e "process._debugProcess(53911)"
,原来的 Node.js 进程会打印出:Debugger listening on ws://127.0.0.1:9229/2331fa07-32af-45eb-a1a8-bead7a0ab905。 - 调出 Chrome DevTools 进行调试。
- debug 是一个小巧却非常实用的日志模块,可以根据环境变量决定打印不同类型(或级别)的日志。代码如下:
app.js
const normalLog = require('debug')('log')
const errorLowLog = require('debug')('error:low')
const errorNormalLog = require('debug')('error:normal')
const errorHighLog = require('debug')('error:high')
setInterval(() => {
const value = Math.random()
switch (true) {
case value < 0.5: normalLog(value); break
case value >= 0.5 && value < 0.7: errorLowLog(value); break
case value >= 0.7 && value < 0.9: errorNormalLog(value); break
case value >= 0.9: errorHighLog(value); break
default: normalLog(value)
}
}, 1000)
- 运行:
$ DEBUG=* node app.js
- repl2:REPL 的增强版,repl2 会根据一个用户配置(~/.noderc),预先加载模块到 REPL 中
$ npm i repl2 -g
- power-assert
注意:在使用 intelli-espower-loader 时,要求必须将测试文件放到 test/ 目录下,所以我们在 test 目录下创建 test/app.js,将原来的 test.js 代码粘贴过去。
- 安装 power-assert 和 intelli-espower-loader,然后运行测试:
$ npm i power-assert intelli-espower-loader --save-dev
$ mocha -r intelli-espower-loader
- GitHub: https://github.com/nearform/node-clinic
- use
npm i clinic -g
使用 clinic doctor 启动并诊断 Node.js 应用:
$ clinic doctor -- node app.js
使用 ab 压测:
$ ab -c 10 -n 200 "http://localhost:3000/"
CTRL+C 终止测试程序,终端打印出:
Warning: Trace event is an experimental feature and could change at any time.
^Canalysing data
generated HTML file is 51485.clinic-doctor.html
用浏览器打开 51485.clinic-doctor.html
- https://github.com/nswbmw/node-in-debugging/blob/master/4.2%20Chrome%20DevTools.md
- debug + repl2 + power-assert: https://github.com/nswbmw/node-in-debugging/blob/master/4.4%20debug%20%2B%20repl2%20%2B%20power-assert.md
- vscode debug: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes