如何使用节点调试带有断点的Gruntfile

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

我已经尝试了以下内容:

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

    在这里输入图像描述

    所以目前节点检查员觉得它让我离我想要的最近。 为了达到这里,我做了以下几件事:

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

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

    然后从那里我去了localhost:8080/debug?port=5858来调试我的Gruntfile.js。 但就像我上面提到的那样,只要我按F8跳到断点就会崩溃,出现上述错误。 有没有人使用这种方法试图调试Gruntfile? 从我的搜索工作中,我还没有找到一个很好的文档记录方式。 所以希望这将成为未来用户的有用或有益的信息。 另外我正在使用Windows 7 。 提前致谢。

    更新:

    我已经尝试过以下建议的@dylants,但没有成功。

  • 在位于C:UserskhollenbeckAppDataRoamingnpm Windows计算机上找到grunt.cmd文件。 打开grunt.cmd文件,发现以下内容....

  • 这导致我到C:UserskhollenbeckAppDataRoamingnpmnode_modulesgrunt-clibin其中包含一个名为grunt的文件。 然后从文件的顶部。 我将此代码#!/usr/bin/env node更改为#!/usr/bin/env node --debug-brk

  • 在执行这个命令后, node-inspector C:pathtogruntfile grunt得到了以下内容。

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

  • 接下来我从grunt dir运行grunt命令。 (让服务器在原始命令提示符下运行)

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

    编辑:

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


    这可以通过启动node-inspector并在调试模式下启动grunt来完成。 完成之后,您可以Gruntfile.js在Chrome浏览器中浏览Gruntfile.js

    启动节点检查器

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

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

    在调试模式下运行grunt

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

    找到脚本的位置后,使用node --debug-brk来执行此脚本,从而以调试模式启动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脚本已经暂停执行并且正在等待调试器一步一步通过。

    使用Chrome进行调试

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


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

    如上所述,要调试一个咕噜任务,你必须在Mac中使用$ which grunt来找到你的Grunt可执行文件,而不是关于Windows。 然后,您必须复制该路径,并将其用作传递给node-debug的第一个参数,第二个参数是任务(如果需要,还可以包含grunt目标)。 例如,它可能看起来像:

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

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

    $ build-debug grunt concat:dev


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

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

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

    node --inspect %APPDATA%npmnode_modulesgrunt-clibingrunt
    

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

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

    链接地址: http://www.djcxy.com/p/30273.html

    上一篇: How to debug a Gruntfile with breakpoints using node

    下一篇: make problem with mingw