所以我花了几天的时间试图让这个没有运气。我发现的大多数解决方案似乎都能正常工作"好的"用于调试节点应用程序但我没有多少运气调试咕噜声独立。我希望能够在我的gruntfile中设置断点,并使用浏览器或IDE逐步执行代码。
我尝试了以下内容:
使用NODE-INSPECTOR的错误消息
所以目前节点检查员觉得它让我最接近我想要的东西。为了到达这里,我做了以下事情:
在我的grunt目录中,我运行了以下命令:
grunt node-inspector
node --debug-brk Gruntfile.js
然后从那里我去localhost:8080/debug?port=5858
调试我的Gruntfile.js。但就像我上面提到的那样,只要我点击F8跳到断点,它就会因上述错误而崩溃。有没有人使用这种方法尝试调试Gruntfile有什么成功?到目前为止,我的搜索工作还没有找到一个记录完备的方法。所以希望这对未来的用户来说是有用的或有益的信息。顺便提一下,我正在使用 Windows 7 。提前谢谢。
更新
到目前为止,我已经尝试了@dylants提出的以下建议。
在位于C:\Users\khollenbeck\AppData\Roaming\npm
的Windows机器上找到grunt.cmd文件。打开grunt.cmd
文件并找到以下内容....
这会引导我C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin
,其中包含一个名为grunt
的文件。从那里的文件的顶部。我将此代码#!/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目录运行grunt
命令。 (让服务器在原始命令提示符下运行)
从这里开始,我希望Gruntfile.js出现在chrome dev工具的源代码中。我也希望能够从那里设置断点。这没有发生。相反,它只是在Gruntfile中一直运行,而不会在浏览器中中断或加载。
修改
啊,我看到我做错了什么。出于某种原因,我做了节点--debug-brk 没有添加路径 C:\ Users \用户khollenbeck \应用程序数据\漫游\故宫\ node_modules \咕噜-CLI \ BIN \呼噜声。 它现在正在工作,非常感谢。我为拖延这个而道歉 太长。但希望这对其他Windows用户有用 未来。
答案 0 :(得分:11)
这可以通过在调试模式下启动node-inspector
并启动grunt
来实现。完成后,您可以像往常一样逐步浏览Chrome中的Gruntfile.js
。
如果您还没有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
命令时执行的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
。
找到脚本的位置后,使用node --debug-brk
执行此脚本,从而在调试模式下启动grunt,打破文件中的第一行代码。例如,假设grunt脚本位于/usr/bin/grunt
:
$ node --debug-brk /usr/bin/grunt
debugger listening on port 5858
当你看到debugger listening on port 5858
作为输出时,你会知道你成功了,这意味着grunt脚本已经暂停执行,并且正在等待调试器逐步完成。
现在启动Chrome并将其指向http://127.0.0.1:8080/debug?port=5858
。在Chrome中,打开并在Gruntfile.js
中添加断点,然后像往常一样逐步完成。
答案 1 :(得分:8)
要启动节点检查器,您不应再传递--debug或--debug-brk标志。您可以使用node-inspector
和文件路径直接启动它,就像您通常使用node
命令开始执行脚本一样。这应该在chrome中自动打开webkit检查器,并在第一行执行时暂停。您可以从这里插入断点并正常调试。
如上所述,要调试grunt任务,您必须在Mac中使用$ which grunt
找到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
答案 2 :(得分:5)
在较新的Node版本中(我认为从6.3开始),有一个内置的调试器/检查器:
https://nodejs.org/en/docs/inspector/
只需启动这样的Grunt应用程序(在Windows上):
node --inspect %APPDATA%\npm\node_modules\grunt-cli\bin\grunt
如果您安装Chrome扩展程序Node Inspector Manager,DevTools将自动打开。
否则,您可以打开chrome://inspect
并手动连接到调试会话。