如何使用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没有运气。
-
在位于
C:\Users\khollenbeck\AppData\Roaming\npm
Windows计算机上findgrunt.cmd文件。 打开grunt.cmd
文件,发现以下…. -
这导致我包含一个名为
grunt
的文件的C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin
。 从那里的文件的顶部。 我将这个代码#!/usr/bin/env node
改为#!/usr/bin/env node --debug-brk
-
在做这个命令
node-inspector C:\path\to\gruntfile grunt
我得到了以下。Node Inspector v0.7.3 Visit http://localhost:8080/debug?port=5858 to start debugging
-
接下来我从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会话。