我的测试模块中有一些调试器语句,想要运行mocha并设置--debug-brk并点击我的断点,以便我可以检查模块的状态。不幸的是,每当我用这个选项运行mocha时,我最后会在下一行显示一个空白光标。我可以输入文本,但似乎没有任何东西可以处理我的命令(它当然看起来不像节点调试器):
$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]
我是否在启动摩卡咖啡时出错?
答案 0 :(得分:57)
使用最近版本的nodejs(>=v6.3.0)和mocha(>=3.1.0),您可以使用V8 inspector integration。
V8 Inspector集成允许将Chrome DevTools附加到Node.js 用于调试和分析的实例
<强>用法强>
--inspect
激活V8检查器集成,--debug-brk
在开头添加断点。自nodejs v7.6.0和mocha v3.3.0起,您就可以使用--inspect-brk
的{{1}}简写
--inspect --debug-brk
使用npm脚本
如果你有一个使用mocha的npm测试脚本,你可以使用选项定界符的结尾 $ 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脚本:
--
Chrome提示
不是每次都复制粘贴网址,而是转到$ npm test -- --inspect --debug-brk
,然后点击&#34;远程目标&#34;中的相应链接。部分。
答案 1 :(得分:51)
我能够使用node-inspector让它工作。我像你在一个shell中一样运行我的测试:
mocha --debug-brk mocha/test.js
然后在第二个shell中运行node-inspector:
node-inspector
在浏览器中显示node-inspector吐出的URL允许我使用Web检查器进行调试。
http://127.0.0.1:8080/debug?port=5858
答案 2 :(得分:48)
要回答原始问题,即使我还建议您查看node-inspector
:您可以使用带有debug
选项的mocha内置到节点中的CLI调试器,而不是--debug
}或--debug-brk
标记。 (注意缺少破折号。)
在您的示例中,它将是:
$ mocha debug tests.js -R spec debugger listening on port 5858 connecting... ok break in node_modules/mocha/bin/_mocha:7 5 */ 6 7 var program = require('commander') 8 , sprintf = require('util').format 9 , path = require('path') debug> [CURSOR]
再次,debug
如上所述以粗体显示,没有破折号。 (=
答案 3 :(得分:10)
如果安装了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
答案 4 :(得分:3)
使用标记chrome://inspect
运行mocha,然后从第localhost:9229
页点击Chrome中的“打开专用的DevTools for node”。在专用的DevTools窗口中添加连接debugger
以自动连接。
还要向要调试的文件添加$promise
语句。
(截至2017年10月,这是使用最新版本的节点和chrome)