Javascript 如何使用Windows 7节点检查器调试带有断点的GrunFile?

Javascript 如何使用Windows 7节点检查器调试带有断点的GrunFile?,javascript,node.js,debugging,gruntjs,windows-7-x64,Javascript,Node.js,Debugging,Gruntjs,Windows 7 X64,所以在过去的几天里,我一直在努力让这一切顺利进行。我发现的大多数解决方案对于调试节点应用程序来说似乎“正常”。但我没有太多的运气单独调试grunt。我希望能够在GrunFile中设置断点,并使用浏览器或IDE逐步完成代码 我尝试了以下方法: (流程结束,退出代码为6) (这种方法可以正常工作,但没有达到eclipse中设置的断点,不是很直观) (这一个也可以用。我可以在chrome中使用F11和F10来逐步解决一些问题。但最终它只是崩溃了。使用F8跳到断点永远不起作用。) 使用NODE-IN

所以在过去的几天里,我一直在努力让这一切顺利进行。我发现的大多数解决方案对于调试节点应用程序来说似乎“正常”。但我没有太多的运气单独调试grunt。我希望能够在GrunFile中设置断点,并使用浏览器或IDE逐步完成代码

我尝试了以下方法:

  • (流程结束,退出代码为6)
  • (这种方法可以正常工作,但没有达到eclipse中设置的断点,不是很直观)
  • (这一个也可以用。我可以在chrome中使用F11和F10来逐步解决一些问题。但最终它只是崩溃了。使用F8跳到断点永远不起作用。)
使用NODE-INSPECTOR的错误消息

因此,目前节点检查器感觉它已经让我最接近我想要的。为了到达这里,我做了以下工作:

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

grunt node-inspector
node --debug-brk Gruntfile.js
然后从那里我转到
localhost:8080/debug?port=5858
调试我的Grunfile.js。但就像我上面提到的,只要我按F8键跳到断点,它就会因为上面的错误而崩溃。是否有人成功地使用此方法调试GrunFile?到目前为止,从我的搜索努力,我还没有找到一个非常好的记录方式这样做。因此,希望这将是有用的或有益的信息,为未来的用户。顺便说一下,我正在使用Windows 7。提前谢谢

更新:

我尝试了@dylants提出的以下建议,但迄今为止运气不佳

  • 在位于
    C:\Users\khollenbeck\AppData\Roaming\npm
    的windows计算机上找到grunt.cmd文件。打开
    grunt.cmd
    文件并找到以下内容

  • 这使我找到了
    C:\Users\khollenbeck\AppData\Roaming\npm\node\u modules\grunt cli\bin
    ,其中包含一个名为
    grunt
    的文件。然后在文件的顶部。我更改了这个代码/usr/bin/env节点到
    #/usr/bin/env节点——调试brk

  • 执行此命令后,
    节点检查器C:\path\to\gruntfile grunt
    我得到了以下信息

    节点检查器v0.7.3
    参观http://localhost:8080/debug?port=5858 开始调试

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

  • 在这里,我期望Grunfile.js出现在chrome开发工具的源代码中。我还希望能够从那里设置断点。这并没有发生。相反,它只是在Gruntfile中一路运行,没有中断或加载到浏览器中

    编辑:


    啊,我明白我做错了什么。出于某种原因,我做了节点调试 不添加路径 C:\Users\khollenbeck\AppData\Roaming\npm\node\u modules\grunt cli\bin\grunt。 现在可以用了,非常感谢。我很抱歉把这件事拖了这么久 这么久。但希望这对其他windows用户有帮助 未来


    这可以通过启动
    节点检查器
    并在调试模式下启动
    grunt
    来实现。完成后,您可以像往常一样在Chrome中单步浏览
    Gruntfile.js

    启动节点检查器 如果您还没有
    节点检查器
    ,请使用
    npm安装-g节点检查器
    安装它。然后在一个终端/命令提示符下启动:

    $ 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安装-g grunt cli
    ),则它很可能位于*nix或Mac计算机的
    /usr/bin
    /usr/local/bin
    中。对于Windows计算机,
    grunt.cmd
    文件指向
    grunt
    脚本所在的位置。
    grunt
    脚本很可能位于
    C:\Users\\AppData\Roaming\npm\node\u modules\grunt cli\bin

    找到脚本的位置后,使用
    节点--debug brk
    执行该脚本,从而在调试模式下启动grunt,在文件的第一行代码上中断。例如,假设grunt脚本位于
    /usr/bin/grunt

    $ node --debug-brk /usr/bin/grunt 
    debugger listening on port 5858
    
    当您看到
    调试器监听端口5858
    作为输出时,就知道您成功了,这意味着grunt脚本已停止执行,并等待调试器逐步执行

    用Chrome调试
    现在打开Chrome并将其指向
    http://127.0.0.1:8080/debug?port=5858
    。在Chrome中,在
    grunfile.js中打开并添加断点,然后像平常一样逐步执行。

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

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

    节点调试/usr/local/bin/grunt-concat:dev

    从这里,您可以调试将为concat任务执行的任何文件。这包括grunt concat的依赖项,这些依赖项将在
    node --inspect %APPDATA%\npm\node_modules\grunt-cli\bin\grunt