我的被测模块中有一些调试器语句,并且希望使用--debug-brk设置运行mocha并击中断点,以便可以检查模块的状态。不幸的是,每当我使用该选项运行mocha时,我都会在下一行出现空白光标。我可以输入文本,但是似乎没有任何东西可以处理我的命令(它看起来确实不像节点调试器):
$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]
我启动Mocha的方式有问题吗?
Answers:
要回答最初的问题,即使我也建议您研究一下node-inspector
:您可以通过mocha使用内置于节点的CLI调试器,并带有debug
选项,而不是--debug
or--debug-brk
标志。(请注意没有破折号。)
在您的示例中,它将是:
$摩卡调试tests.js -R规范 侦听器侦听端口5858 连接...好 中断node_modules / mocha / bin / _mocha:7 5 * / 6 7 var程序= require('commander') 8,sprintf = require('util')。format 9,路径= require('path') 调试> [CURSOR]
同样,debug
如上以粗体显示,没有破折号。(=
mocha debug
在休息node_modules/mocha/bin/_mocha
,而不是在我的代码,我把debugger
发言?您如何在代码中删除debugger
语句的那一点获得REPL ?
c
一次到达断点,但是要到达NBD。)但是令人讨厌的是,我坐在断点时似乎无法检查任何东西。就像我可以拥有的var foo='bar'; debugger;
,如果我foo
在提示符下键入,我会得到ReferenceError: foo is not defined
repl
在调试器的命令行中键入内容,以便为自己的代码获得实际的交互环境!
使用最新版本的nodejs(> = v6.3.0)和mocha(> = 3.1.0),可以使用V8检查器集成。
V8 Inspector集成允许将Chrome DevTools附加到Node.js实例以进行调试和性能分析
用法
--inspect
激活V8检查器集成,并--debug-brk
在开始处添加一个断点。从nodejs v7.6.0和mocha v3.3.0开始,您可以将--inspect-brk
简写用于--inspect --debug-brk
$ mocha --debug-brk --inspect
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
使用npm脚本
如果您有一个使用mocha的npm测试脚本,则可以使用option delimiter 的结尾将选项从npm传递到您的mocha脚本--
:
$ npm test -- --inspect --debug-brk
镀铬笔尖
不必每次都复制粘贴该URL,而是转到chrome://inspect
并单击“远程目标”部分中的相应链接。
--inspect
和--watch
协同工作。
npm test -- --inspect --debug-brk
因为nodev6.3 +绝对正确,我开始怀疑它,但是正如@busticated指出的那样,您需要升级Mocha版本。就我而言,我去3.0.2
了3.5.0
我能够使用node-inspector使它正常工作。我像在一个shell中显示的那样运行测试:
mocha --debug-brk mocha/test.js
然后在第二个shell中运行node-inspector:
node-inspector
在浏览器中显示节点检查器吐出的URL,使我可以使用Web检查器进行调试。
http://127.0.0.1:8080/debug?port=5858
debugger;
在您想要断点的任何地方添加代码行。此处的更多信息:nodejs.org/api/debugger.html
如果安装了node-insector,则可以调试Mocha测试,而无需先实际运行node-inspector。最简单的方法是
node-debug _mocha
那应该开始调试chrome中的节点测试(也适用于Safari)
我看到测试无法正常工作的原因之一是有时您尝试使用http:// localhost:8080 / debug?port = 5858或http://127.0.0.1:8080/debug?port=5858
babel-node-debug
软件包/命令可能会有所帮助。
--debug
和之间有一个区别--debug-brk
。在--debug-brk
启动时停止应用程序。在--debug
启动应用程序,并在你的第一个断点处停止。