有人使用node-inspector和Grunt进行应用程序调试吗?如果没有,你能推荐一个基于Grunt的应用程序的调试工具吗?
答案 0 :(得分:135)
要在debug中运行grunt,您需要将grunt脚本明确地传递给节点:
node-debug $(which grunt) task
并在您的任务中添加debugger;
行。然后node-inspector
将打开带有调试工具的浏览器。
node-inspector
添加了命令node-debug
,该命令以--debug
状态启动节点并打开浏览器到node-inspector
页面,当它到达第一个debugger
时停止1}}行或设置断点。
在Windows上,事情变得更复杂。有关说明,请参阅@ egluhotorenko的答案。
答案 1 :(得分:39)
运行
node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname
来自您Gruntfile.js
目录中的cmd。不要忘记将debugger;
行放在必要的地方。
答案 2 :(得分:7)
要进行调试,我们必须修改bin下的grunt文件。在我的机器上,grunt全局安装,所以我去了/ usr / local / lib / node_modules / grunt / bin 我打开文件并进行了修改:
#!/usr/bin/env node
要
#!/usr/bin/env node --debug-brk
- debug-brk将在javascript运行的第一行中断。
单独这样做是不够的,因为您将无法在节点检查器的下拉列表中找到您的grunt任务js文件,因此您必须修改您对调试感兴趣的文件通过在您希望断点发生的地方添加debugger;
。
现在,您可以在第一次休息后点击继续,然后就可以查看debugger;
行
非常kludgy,但这是我到目前为止找到的唯一方法。
答案 3 :(得分:6)
我最近创建了grunt-node-inspector来轻松配置节点检查器和其他grunt工作流程,请查看:https://github.com/ChrisWren/grunt-node-inspector
以下是Gruntfile的一部分,它说明了如何使用grunt-node-inspector,grunt-concurrent和grunt-shell调试grunt任务:https://github.com/CabinJS/Cabin/blob/master/Gruntfile.js#L44-L77
答案 4 :(得分:4)
我已经完成了运行我的应用并启动node-inspector的任务。 它远比当前命题好,你只需要在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');
});
答案 5 :(得分:3)
Great answers here. In 2017, now you can do
node --inspect --debug-brk $(which grunt) taskName
Which prints something like.
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
Open that URL in chrome, and you're good to go!
I'm using Node 7.3.0 and I'm on Mac. You might have to follow some of the advice in other posts to get it going on Windows.
答案 6 :(得分:1)
2019更新
如果要在调试模式下启动grunt任务并在第一行中断:
node --inspect-brk $(which grunt) taskName
如果要在特定端口上以调试模式启动grunt任务:
node --inspect-brk=8080 $(which grunt) taskName
如果要将VSCODE附加到运行grunt调试会话的节点进程,请在vscode中使用以下配置:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach by port IP 5656",
"port": 8080
}
]
}