Visual Studio 2013节点远程调试器和摩卡

时间:2013-11-24 03:09:15

标签: node.js debugging visual-studio-2012 visual-studio-2013

我一直在尝试使用新节点扩展在Visual Studio 2013中调试mocha测试的最后几个小时。我可以使用node-inspector + chrome进行远程调试,但希望有人在vs 2013中解决这个问题。所以我运行这样的测试

test ./node_modules/.bin/mocha \
    --reporter $(REPORTER) \
    --ui tdd \
    --recursive \
    --debug-brk

当我到达vs时,我可以看到localhost:5858附加到。当我附加它开始调试,然后退出。除了似乎做任何事情之外,测试不会向前发展。

1 个答案:

答案 0 :(得分:0)

我刚才有同样的问题。经过半天的调试NTVS,Nodejs和V8引擎,设法找出问题所在。我也提出了bug with V8 teamposted to NTVS team分辨率。虽然V8调试器是真正的罪魁祸首,但两者都可以修复它。

您可以read向NTVS团队提交报告的详细信息,但这是简短版本。基本上附加到进程对话框使V8调试器代理处于不一致状态,因为它检测到debugee进程的方式是发出socket connect with immediate disconnect(以测试该主机/端口组合是否有效)。这与调试器代理不兼容,并且它进入一种状态,在该状态下,它认为它没有建立调试会话。因此,所有后续连接都会失败(例如,当您单击“附加到进程”屏幕上的“附加”按钮时)。这就是Visual Studio闪烁的原因,似乎没有任何事情发生。

特别是'mocha'有两种解决方法:

  1. 通过RemoteDebug.js代理(包含在NTVS中)调用

    注意:调用“_mocha”而不是“mocha”!
    注意:在VS中,您必须连接到 ComputerName:5858 而不是 localhost:5858

    node RemoteDebug.js -breakatentrypoint .\node_modules\.bin\_mocha
    

    或者,如果像我一样,你将mocha安装为全局npm包:

    node "%VS120COMNTOOLS%\..\IDE\Extensions\Microsoft\Node.js Tools\1.0\RemoteDebug\RemoteDebug.js"
    -breakatentrypoint "%APPDATA%\npm\node_modules\mocha\bin\_mocha"
    
  2. 或者另外,在您看到Attach to Process窗口中的节点进程之后,在单击Attach之前,重新启动mocha命令以重置V8调试器代理(然后点击Attach而不刷新)