node-inspector
,与进行对话node --debug
,向连接的浏览器提供调试信息。这很棒,因为您随后可以将Chrome连接到节点检查器进程,并使用所有Web检查器工具调试您的应用。 github.com/dannycoates/node-inspector
node-inspector
,与进行对话node --debug
,向连接的浏览器提供调试信息。这很棒,因为您随后可以将Chrome连接到节点检查器进程,并使用所有Web检查器工具调试您的应用。 github.com/dannycoates/node-inspector
Answers:
要在调试中运行grunt,您需要将grunt脚本显式传递给节点:
node-debug $(which grunt) task
并debugger;
在任务中添加一行。node-inspector
然后将使用调试工具打开浏览器。
node-inspector
添加了命令node-debug
,该命令会以一种--debug
状态启动节点并打开浏览器到node-inspector
页面,并在到达第一debugger
行或设置断点时停止。
在Windows上,事情有点复杂。有关说明,请参见@ e.gluhotorenko的答案。
$(which grunt)
是什么吗?只是我要调试的Gruntfile.js吗?而task
我只想serve
举一个例子呢?我已经尝试了很多其他方法,但是我无法使它正常工作。Node-inspector打开并在第一行中断,但是即使我将一行作为函数的第一行,我也无法中断任务。grunt serve
serve
node-debug Gruntfile.js serve
serve
debugger;
grunt.js
脚本的完整路径。那就是实际运行Grunt的脚本。如果您使用的是Windows,请查看stackoverflow.com/a/13443026/240358(此问题下方的答案),以获取grunt-cli脚本的可能位置。这将代替grunt
您的命令-在您的示例中,替换task
为serve
跑
node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname
从目录中的cmd与您的Gruntfile.js
。别忘了把debugger;
线放在必要的地方。
grunt-cli
软件包的一部分:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
要进行调试,我们必须修改bin下的grunt文件。在我的机器上,grunt是全局安装的,所以我去了/ usr / local / lib / node_modules / grunt / bin,我打开了文件并进行了修改:
#!/usr/bin/env node
至
#!/usr/bin/env node --debug-brk
--debug-brk将在运行javascript的第一行中断。
但是,仅凭一己之力还不够,因为在节点检查器的下拉列表中您将无法找到自己笨拙的任务js文件,因此您必须通过添加以下debugger;
位置来修改对调试感兴趣的文件:您希望断点发生。现在,您可以在第一个中断后单击“继续”,然后就debugger;
行了。
相当狡猾,但这是我到目前为止发现的唯一方法。
我最近创建了grunt-node-inspector,可以轻松地将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
node --debug-brk $(which grunt) node-inspector build test
点什么?我喜欢。
node-inspector
不会退出,允许build
和test
运行,因为它始终运行。我将链接添加到片段中进行设置的地方。
node-inspector &
,将其保留在后台,然后调用完成。您对此有何想法?
grunt node-inspector
,然后转到localhost url,但看不到任何源文件。只是空的调试器工具。
grunt node-inspector
并node --debug-brk Gruntfile.js
从我的grunt目录中。但是,当我在grunt文件中设置一个断点时,它会因连接错误而崩溃。
我已经完成了运行我的应用程序并启动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');
});
很好的答案。在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中打开该网址,一切顺利!
我正在使用Node 7.3.0,并且在Mac上。您可能必须遵循其他帖子中的一些建议,才能使其在Windows上运行。
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
}
]
}