如何使用node-inspector,Windows 7debugging带有断点的Gruntfile?

所以我花了几天的时间试图让这个没有运气的工作。 我发现的大多数解决scheme似乎对于debugging节点应用程序都是“好的”。 但我没有太多的运气debugging咕噜站在独立。 我希望能够在我的gruntfile中设置断点,并通过浏览器或IDE浏览代码。

我已经尝试了以下内容:

  • 使用intelliJ IDE进行debugging使用Grunt控制台 ( 处理结束,退出代码6
  • 使用Nodeeclipse进行debugging ( 这种工作方式没问题,但是不会在eclipse中设置断点,不太直观
  • 使用node-inspector进行debugging ( 这也是一些工作,我可以在chrome中使用F11和F10,但最终它只是崩溃,使用F8跳到break point永远不会工作。

错误信息使用节点检查器

在这里输入图像描述

所以目前节点检查员觉得它已经让我接近我想要的。 为了达到这里我做了以下几点:

从我的grunt目录中运行以下命令:

grunt node-inspector node --debug-brk Gruntfile.js 

然后从那里我去了localhost:8080/debug?port=5858来debugging我的Gruntfile.js。 但就像我上面提到的,只要我打F8跳到断点它崩溃与上述错误。 有没有人有任何成功使用这种方法来尝试debuggingGruntfile? 从我的search工作到目前为止,我还没有find一个非常有据可查的方法来做到这一点。 所以希望这将是对未来用户有用或有益的信息。 另外我正在使用Windows 7的方式。 提前致谢。

更新:

我已经尝试过以下build议的@dylants没有运气。

  1. 在位于C:\Users\khollenbeck\AppData\Roaming\npm Windows计算机上findgrunt.cmd文件。 打开grunt.cmd文件,发现以下….

    在这里输入图像描述

  2. 这导致我包含一个名为grunt的文件的C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin 。 从那里的文件的顶部。 我将这个代码#!/usr/bin/env node改为#!/usr/bin/env node --debug-brk

  3. 在做这个命令node-inspector C:\path\to\gruntfile grunt我得到了以下。

    Node Inspector v0.7.3 Visit http://localhost:8080/debug?port=5858 to start debugging

  4. 接下来我从grunt dir运行grunt命令。 ( 使服务器在原始命令提示符下运行

从这里我期望Gruntfile.js出现在chrome开发工具的源代码中。 我也希望能够从那里设置断点。 这没有发生。 相反,它只是通过Gruntfile运行,不会在浏览器中打开或加载。

编辑:

啊,我明白我做错了什么。 出于某种原因,我没有添加pathC:\ Users \ khollenbeck \ AppData \ Roaming \ npm \ node_modules \ grunt-cli \ bin \ grunt作为节点–debug-brk。 它的工作现在,非常感谢。 我很抱歉拖了这么久。 但希望这对未来的其他Windows用户有用。

这可以通过启动node-inspector并在debugging模式下启动grunt来完成。 一旦完成,您可以像Gruntfile.js在Chrome浏览器中浏览您的Gruntfile.js

启动节点检查器

如果您还没有node-inspector ,请使用npm install -g node-inspector进行npm install -g node-inspector 。 然后在一个terminal/命令提示符下启动它:

 $ node-inspector Node Inspector v0.7.3 Visit http://127.0.0.1:8080/debug?port=5858 to start debugging. 

在debugging模式下运行grunt

接下来,find你的grunt脚本。 这是从命令行运行grunt命令时执行的JavaScript文件。 如果你在全局安装grunt(使用npm install -g grunt-cli ),那么它很可能在* nix或Mac机器的/usr/bin/usr/local/bin中。 对于Windows计算机, grunt.cmd文件指向grunt脚本所在的位置。 grunt脚本很可能位于C:\Users\<username>\AppData\Roaming\npm\node_modules\grunt-cli\bin

find脚本的位置之后,使用node --debug-brk来执行此脚本,从而以debugging模式启动grunt,以打破文件中第一行代码。 例如,想象一下grunt脚本位于/usr/bin/grunt

 $ node --debug-brk /usr/bin/grunt debugger listening on port 5858 

当你看到debugger listening on port 5858作为输出debugger listening on port 5858时,你会知道你是成功的,这意味着grunt脚本已经停止执行,并且正在等待debugging器join。

使用Chrome进行debugging

现在调出Chrome并将其指向http://127.0.0.1:8080/debug?port=5858 。 在Chrome中,在Gruntfile.js打开并添加断点,并Gruntfile.js逐步完成。

要启动节点检查器,不应该再传递–debug或–debug-brk标志。 您可以使用node-inspector和filepath直接启动它,就像通常使用node命令开始执行脚本一样。 这应该会自动在chrome中打开webkit检查器,并在执行的第一行暂停。 你可以从这里插入你的断点和debugging正常。

如上所述,要debugging一个咕噜的任务,你将不得不使用Mac中的$ which grunt来find你的Grunt可执行文件,不确定Windows。 那么你将不得不复制该path,并将其用作传递给node-debug的第一个参数,第二个参数是任务(如果需要,还可以包含grunt目标)。 例如,它可能看起来像:

node-debug /usr/local/bin/grunt concat:dev

并从这里你可以debugging任何将被执行concat任务的文件。 这包括将在其本地node_modules中的grunt-concat的依赖关系。 因为我发现它复制和粘贴我的可执行文件path令人讨厌,所以我做了最简单的Node cli来将它抽象出去。https://github.com/dtothefp/node-build-debug 。 如果全局安装(当然还有全局安装的节点检查器),您可以:

$ build-debug grunt concat:dev

在较新的Node版本(从6.3开始,我认为),有一个内置的debugging器/检查器:

https://nodejs.org/en/docs/inspector/

刚开始你的Grunt应用程序就像这样(在Windows上):

 node --inspect %APPDATA%\npm\node_modules\grunt-cli\bin\grunt 

如果您安装Chrome扩展节点检查器pipe理器 ,则DevTools将自动打开。

否则,您可以打开chrome://inspect并手动连接到debugging会话。