使用mocha的--debug-brk开关启用节点调试器的正确方法是什么?

时间:2013-01-16 06:36:17

标签: node.js javascript-events mocha

我的测试模块中有一些调试器语句,想要运行mocha并设置--debug-brk并点击我的断点,以便我可以检查模块的状态。不幸的是,每当我用这个选项运行mocha时,我最后会在下一行显示一个空白光标。我可以输入文本,但似乎没有任何东西可以处理我的命令(它当然看起来不像节点调试器):

$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]

我是否在启动摩卡咖啡时出错?

5 个答案:

答案 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.0mocha 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如上所述以粗体显示,没有破折号。 (=

相关:https://github.com/visionmedia/mocha/issues/247

答案 3 :(得分:10)

如果安装了node-insector,则可以调试Mocha测试,而无需先实际运行node-inspector。最简单的方法是

node-debug _mocha

应该开始调试chrome中的节点测试(也适用于Safari)

我看到测试不起作用的一个原因有时是您尝试http://localhost:8080/debug?port=5858http://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)