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

Kri*_*eck 9 javascript debugging windows-7-x64 node.js gruntjs

所以我花了几天的时间试图让这个没有运气.我发现的大多数解决方案对于调试节点应用程序似乎都"正常".但我没有多少运气调试咕噜声独立.我希望能够在我的gruntfile中设置断点,并使用浏览器或IDE逐步执行代码.

我尝试过以下方法:

使用NODE-INSPECTOR的错误消息

在此输入图像描述

因此,目前节点检查员感觉它已经让我最接近我想要的.到这里我做了以下事情:

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

grunt node-inspector
node --debug-brk Gruntfile.js
Run Code Online (Sandbox Code Playgroud)

然后从那里我去localhost:8080/debug?port=5858调试我的Gruntfile.js.但就像我上面提到的那样,只要我点击F8跳到断点,它就会因上述错误而崩溃.有没有人使用这种方法尝试调试Gruntfile有什么成功?到目前为止,我的搜索工作还没有找到一个记录完备的方法.所以希望这对未来的用户来说是有用的或有益的信息.我也顺便使用Windows 7.提前致谢.

更新:

到目前为止,我已经尝试了@dylants提出的以下建议.

  1. 在位于的Windows机器上找到了grunt.cmd文件C:\Users\khollenbeck\AppData\Roaming\npm.打开grunt.cmd文件,发现以下内容....

    在此输入图像描述

  2. 这导致我C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin包含一个名为的文件grunt.从那里的文件的顶部.我将此代码更改#!/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从grunt目录运行命令.(让服务器在原始命令提示符下运行)

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

编辑:

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

dyl*_*nts 11

这可以通过在调试模式下启动node-inspector和启动来完成grunt.完成后,您可以像平常一样逐步Gruntfile.js浏览Chrome内部.

启动节点检查器

如果您还没有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.
Run Code Online (Sandbox Code Playgroud)

在调试模式下运行grunt

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

找到脚本的位置后,使用node --debug-brk执行此脚本,从而在调试模式下启动grunt,打破文件中的第一行代码.例如,假设grunt脚本位于/usr/bin/grunt:

$ node --debug-brk /usr/bin/grunt 
debugger listening on port 5858
Run Code Online (Sandbox Code Playgroud)

当你看到debugger listening on port 5858输出时,你会知道你是成功的,这意味着grunt脚本已经停止执行并且正在等待调试器逐步完成.

使用Chrome调试

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


dto*_*efp 8

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

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

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

从这里你可以调试将为concat任务执行的任何文件.这包括grunt-concat的依赖关系,它将在其本地node_modules中.因为我发现复制并粘贴我的可执行文件路径很烦人所以我制作了最简单的Node cli来抽象出来这个https://github.com/dtothefp/node-build-debug.如果您全局安装(当然还有全局安装的node-inspector),您可以:

$ build-debug grunt concat:dev


Dmy*_*nko 5

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

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

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

node --inspect %APPDATA%\npm\node_modules\grunt-cli\bin\grunt
Run Code Online (Sandbox Code Playgroud)

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

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