node.js - Visual Studio 2013 Node 远程调试器和 mocha

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

过去几个小时我一直在尝试寻找一种使用新 Node 扩展在 Visual Studio 2013 中调试摩卡测试的方法。我能够使用 node-inspector + chrome 进行远程调试,但希望有人已经通过 vs 2013 解决了这个问题。所以我运行我的测试,如下所示

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

当我进入 vs 时,我可以看到要附加的 localhost:5858。当我附加它时,它开始调试然后退出。测试没有任何进展,除此之外似乎没有任何作用。

最佳答案

我刚刚遇到了完全相同的问题。经过半天的调试NTVS、Nodejs和V8引擎,终于解决了问题。我已经提出了bug with V8 team ,和posted to NTVS team关于分辨率也是如此。尽管 V8 调试器是真正的罪魁祸首,但两者都可以修复它。

您可以read向 NTVS 团队报告的详细信息,但这里是简短版本。从本质上讲,“附加到进程”对话框会使 V8 调试器代理处于不一致的状态,因为它检测被调试进程的方式是发出套接字连接并立即断开连接(以测试主机/端口组合是否有效)。这对于调试器代理来说效果不佳,并且它会进入一种状态,它认为自己已经建立了调试 session ,但实际上并没有建立。因此,与它的所有后续连接都会失败(例如,当您单击“附加到进程”屏幕上的“附加”按钮时)。这就是 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. 或者,在“附加到进程”窗口中看到 Node 进程后,在单击“附加”之前,重新启动 mocha 命令以重置 V8 调试器代理(然后单击“附加”而不刷新)

关于node.js - Visual Studio 2013 Node 远程调试器和 mocha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20170633/

相关文章:

带有 Selenium 独立服务器的 Node.js 和 Webdriver.io 无法使用自定义配置文件

node.js - NodeJS 与 Mongoose - 实用地将 url 添加到使用 find() 检索到的图像中

xaml - 如何在 Visual Studio 2012 中将 XAML 页面与代码隐藏一起导入?

visual-studio-2012 - 发布先决条件选项中缺少 XNA Redistributable

javascript - 使用node-twitter发推文时出现错误401

node.js - 使用 objectId 保存 Mongoose

java - 我怎样才能最好地调试 intelliJ-idea 中的 solr?

c# - 将调试器附加到 IIS 实例

.net - MS Source Server - 使用 srctool 查看时源流显然不存在

c++ - glfw 和 MSVS 2012 的链接器错误