在Grunt任务中使用节点检查器

有人使用Grunt的 节点检查器进行应用程序debugging吗? 如果不是,你能推荐一个基于Grunt的应用程序的debugging工具吗?

我正在与服务器端应用程序的nodejs ,我有Grunt使用分离任务(这是因为用户可以执行任务分开)。

提前致谢

要在debugging中运行grunt,你需要明确地将grunt脚本传递给节点:

 node-debug $(which grunt) task 

并放置一个debugger; 在你的任务线。 然后node-inspector将打开一个带有debugging工具的浏览器。

编辑2014年2月28日

node-inspector添加了命令node-debug ,该命令启动处于--debug状态的节点,并打开浏览器到node-inspector页面,当它遇到第一个debugger行或设置断点时停止。

编辑2015年1月30日

在Windows上,事情是一个更复杂的触摸。 有关说明,请参阅@ suchluhotorenko的答案。

Windows解决scheme

 node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname 

从你的Gruntfile.js目录中的cmd。 不要忘记把debugger; 在必要的地方行。

为了debugging,我们必须修改bin下的grunt文件。 在我的机器上,grunt是全局安装的,所以我去了/ usr / local / lib / node_modules / grunt / bin我打开文件并修改:

#!/usr/bin/env node

#!/usr/bin/env node --debug-brk

–debug-brk将在JavaScript的第一行中运行。

尽pipe如此,这还不够,因为在节点检查器的下拉列表中找不到任何js文件,因此您必须通过添加debugger;来修改您感兴趣的文件debugger; 你想在哪里断点发生。 现在你可以在第一次rest之后点击继续,然后你就可以debugger;你了debugger; 线

相当不错,但这是迄今为止我发现的唯一方法。

我最近创build了grunt-node-inspector来轻松configurationnode-inspector和其余的grunt工作stream,检查一下: https : //github.com/ChrisWren/grunt-node-inspector

下面是Gruntfile的一部分,它演示了如何使用grunt-node-inspector,grunt-concurrent和grunt-shell来debugginggrunt任务: https : //github.com/CabinJS/Cabin/blob/master/Gruntfile。 JS#L44-L77

我做了一个任务来运行我的应用程序并启动节点检查器。 这比现在的命题好得多,你只需要在gruntfile中添加这个任务:

  grunt.registerTask('debug', 'My debug task.', function() { var done = this.async(); grunt.util.spawn({ cmd: 'node', args: ['--debug', 'app.js'], opts: { //cwd: current workin directory } }, function (error, result, code) { if (error) { grunt.log.write (result); grunt.fail.fatal(error); } done(); }); grunt.log.writeln ('node started'); grunt.util.spawn({ cmd: 'node-inspector', args: ['&'], opts: { //cwd: current workin directory } }, function (error, result, code) { if (error) { grunt.log.write (result); grunt.fail.fatal(error); } done(); }); grunt.log.writeln ('inspector started'); }); 

这里很好的答案。 在2017年,现在你可以做

node --inspect --debug-brk $(which grunt) taskName

打印类似的东西。

To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471

在Chrome中打开该URL,你很好走!

我正在使用节点7.3.0,我在Mac上。 您可能需要遵循其他post中的一些build议才能在Windows上进行。