我一直在尝试使用新节点扩展在Visual Studio 2013中调试mocha测试的最后几个小时。我可以使用node-inspector + chrome进行远程调试,但希望有人在vs 2013中解决这个问题。所以我运行这样的测试
test ./node_modules/.bin/mocha \
--reporter $(REPORTER) \
--ui tdd \
--recursive \
--debug-brk
当我到达vs时,我可以看到localhost:5858附加到。当我附加它开始调试,然后退出。除了似乎做任何事情之外,测试不会向前发展。
答案 0 :(得分:0)
我刚才有同样的问题。经过半天的调试NTVS,Nodejs和V8引擎,设法找出问题所在。我也提出了bug with V8 team和posted to NTVS team分辨率。虽然V8调试器是真正的罪魁祸首,但两者都可以修复它。
您可以read向NTVS团队提交报告的详细信息,但这是简短版本。基本上附加到进程对话框使V8调试器代理处于不一致状态,因为它检测到debugee进程的方式是发出socket connect with immediate disconnect(以测试该主机/端口组合是否有效)。这与调试器代理不兼容,并且它进入一种状态,在该状态下,它认为它没有建立调试会话。因此,所有后续连接都会失败(例如,当您单击“附加到进程”屏幕上的“附加”按钮时)。这就是Visual Studio闪烁的原因,似乎没有任何事情发生。
特别是'mocha'有两种解决方法:
通过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"
或者另外,在您看到Attach to Process窗口中的节点进程之后,在单击Attach之前,重新启动mocha命令以重置V8调试器代理(然后点击Attach而不刷新)