Est-ce que quelqu'un a utilisé node-inspector avec Grunt pour le débogage de l'application? Sinon, pouvez-vous recommander un outil de débogage pour les applications Grunt?
Je travaille avec nodejs pour une application côté serveur et j'ai Grunt pour utiliser des tâches séparées (car les utilisateurs peuvent exécuter des tâches séparément).
Pour exécuter grunt dans le débogage, vous devez transmettre le script grunt au noeud de manière explicite:
node-debug $(which grunt) task
et mettez une ligne debugger;
dans votre tâche. node-inspector
ouvrira alors un navigateur avec des outils de débogage.
node-inspector
a ajouté la commande node-debug
, qui lance le noeud dans un état --debug
et ouvre le navigateur à la page node-inspector
, en s'arrêtant lorsqu'il atteint la première ligne debugger
ou le point d'arrêt défini.
Sous Windows, les choses sont un peu plus compliquées. Voir la réponse de @ e.gluhotorenko pour des instructions.
Courir
node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname
de cmd dans le répertoire avec votre Gruntfile.js
. N'oubliez pas de mettre la ligne debugger;
aux endroits nécessaires.
Pour déboguer, nous devons modifier le fichier grunt sous bin. Sur ma machine, grunt est installé globalement, je suis donc allé dans /usr/local/lib/node_modules/grunt/binJ'ai ouvert le fichier et modifié:
#!/usr/bin/env node
À
#!/usr/bin/env node --debug-brk
--debug-brk se cassera sur la première ligne de javascript.
Faire cela seul ne suffit pas cependant, car vous ne pourrez pas trouver votre fichier de tâche grognant dans l'inspecteur déroulant, vous devez donc modifier le fichier que vous souhaitez déboguer en ajoutant debugger;
où vous voulez que le point d'arrêt se produise. Maintenant, vous pouvez cliquer sur Continuer après la première pause et vous interrompez la ligne debugger;
Joli kludgy, mais c'est la seule façon que j'ai trouvé jusqu'à présent.
J'ai récemment créé grunt-node-inspector pour configurer facilement node-inspector avec le reste de votre flux de travail grunt. Vérifiez-le: https://github.com/ChrisWren/grunt-node-inspector
Voici une section d'un fichier Grunt qui illustre comment vous pouvez déboguer une tâche à l'aide de grunt-node-inspector, grunt-concurrent et grunt-Shell: https://github.com/CabinJS/Cabin/blob/master/ Gruntfile.js # L44-L77
J'ai fait une tâche pour exécuter mon application et lancer node-inspector . C'est beaucoup mieux que la proposition actuelle, il vous suffit d'ajouter cette tâche dans le fichier grunt:
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');
});