Javascript node.js mocha在未捕获错误时回退到调试器

Javascript node.js mocha在未捕获错误时回退到调试器,javascript,node.js,debugging,mocha.js,Javascript,Node.js,Debugging,Mocha.js,node.js(理想情况下也是mocha)中有没有办法模拟python的行为 python -m pdb setup.py test 如果程序抛出一个未捕获的异常,它将返回到调试接口on 编辑 @robertklep建议使用未记录的breaknexception命令,该命令看起来非常棒,但实际上并不多: test.js var hello = {}; function testFunc () { anotherFunct(); } function anotherFunct () {

node.js(理想情况下也是mocha)中有没有办法模拟python的行为

python -m pdb setup.py test
如果程序抛出一个未捕获的异常,它将返回到调试接口on

编辑

@robertklep建议使用未记录的
breaknexception
命令,该命令看起来非常棒,但实际上并不多:

test.js

var hello = {};
function testFunc () {
  anotherFunct();
}

function anotherFunct () {
  var b = hello.unfound;
}
testFunc();
然后它冻结在:

$ node debug test.js
< Debugger listening on port 5858
connecting to port 5858... ok
break in test.js:1
> 1 var hello = {};
  2 function testFunc () {
  3   anotherFunct();
debug> breakOnException
debug> c
debug> backtrace
$node debug test.js
<调试器正在端口5858上侦听
正在连接到端口5858。。。好啊
break-in-test.js:1
>1 var hello={};
2函数testFunc(){
3另一个函数();
调试>异常
调试>c
调试>回溯

EDIT2:test.js一开始没有产生错误。上面的操作很好。

将此添加到脚本中:

process.on('uncaughtException', function() {
  debugger;
});
然后从
节点debug script.js
开始。这将使您进入关于未捕获异常/错误的页面

要使其(在某种程度上)适用于Mocha测试,您可以添加上面的行并按照说明操作(特别是安装
节点检查器
并使用
--debug brk
启动Mocha)

编辑:节点调试器还能够在出现错误/异常时中断:

$ node debug script.js
debug> breakOnException
debug> c
...

调试器调用是在错误上下文中进行的,所以这一点都不是很有用……关键是要有一个repl来检查错误发生的环境。Chrome还有一个漂亮的“出错时中断”按钮(你甚至可以得到令人难以置信的异步堆栈)所以我以为人们会把它移植到node…@fakedrake看我的编辑,node也有类似的东西。哇!这怎么没有记录下来?你可能应该使用“正确的”远程调试器,比如REPL客户端是非常有限的。FWIW,你展示的示例没有问题,所以代码运行并完成了。也许这就是为什么回溯导致它冻结(显然仍然很糟糕)。你是对的,我不小心。谢谢。