用节点检查器debugging远程mocha.jstesting?

我有一个远程计算机上的testing文件,我想通过node-inspector走过它。 所以,在远程机器上( Vagrantfile ):

 node-inspector & mocha --debug-brk foo.test.js 

然后,在我的开发机器上,我打开金丝雀,然后去:

 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 

但是,我无法debugging我的testing,因为debugging器将在node_modules/mocha/bin/_mocha的第一行node_modules/mocha/bin/_mocha ,而我的testing文件在Sources选项卡中不可见

在这里输入图像描述

我试着在398行的 _mocha里设置一个断点:

 runner = mocha.run(program.exit ? exit : exitLater); 

但是,当我尝试“进入”,看到runfunction执行,它不介入。我可以看到控制台中的输出,所以它虽然执行。 如果我直接在run函数中设置断点,它不会在那里破坏。

此外, testing文件从不出现在“Sources”选项卡中,因此我无法在其中设置断点。 我也尝试添加一个debugger语句,但它仍然没有在那里打破。

我怎样才能让节点检查员显示testing文件,并通过它?

 node v0.12.0 node-inspector v0.10.0 mocha v2.2.4 

我经常碰到这个,我不知道是否有更好的解决scheme(如果有我会很高兴听到它),但是我发现我必须让debugging器前进到它意识到我想debugging的其他文件。 在没有看到更多代码的情况下,我无法给出更具体的关于何处前进的build议,但试图找出testing文件将在哪些源文件中加载并前进到那里。 随着代码的运行,它会逐渐将更多文件添加到“来源”面板。

其实有两个问题:

  1. 断点不尊重
  2. testing文件不可见

第一个问题是在最近发布的node-inspector@v0.10.1 。 所以,断点在任何地方都会受到尊重。

还有第二个问题。 正如@JMM所说,“Sources”选项卡中的文件列表是dynamic的,当进程中断时,testing文件不会出现在那里。 我最终做的是在testing函数运行之前设置一个断点,在mocha/lib/runnable.js#266 ,在这一行:

 var result = fn.call(ctx); 

fn是testingfunction。 一旦进入它,testing文件将出现在Sources选项卡中,并且debugging器的光标将位于testingfunction的第一行。