Utilisation de l'inspecteur des noeuds avec des tâches Grunt

Est-ce que quelqu'un a utilisé l' inspecteur de noeuds avec Grunt pour le débogage d'application? Sinon, pouvez-vous recommander un outil de débogage pour les applications basées sur Grunt?

Je travaille avec nodejs pour une application côté serveur et j'ai Grunt pour utiliser des tâches séparées (c'est parce que les utilisateurs peuvent exécuter des tâches séparément).

Merci d'avance

    Pour exécuter grunt dans debug, vous devez passer explicitement le script grunt au noeud:

     node-debug $(which grunt) task 

    Et mettre un debugger; Dans votre tâche. node-inspector ouvrira alors un navigateur avec des outils de débogage.

    Modifier 28 février 2014

    node-inspector a ajouté la commande node-debug , qui lance le nœud dans un état --debug et ouvre le navigateur vers la page de l' node-inspector des node-inspector , s'arrêtant quand il frappe la première ligne du debugger ou définit le point d'arrêt.

    Édition 30 janvier 2015

    Sur Windows, les choses sont un peu plus compliquées. Consultez la réponse de @ e.gluhotorenko pour obtenir des instructions.

    Solution Windows

    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 le debugger; Alignement dans les endroits nécessaires.

    Pour déboguer, nous devons modifier le fichier grunt sous bin. Sur ma machine, le grognement est installé globalement, alors je suis allé à / usr / local / lib / node_modules / grunt / bin J'ai ouvert le fichier et j'ai modifié:

    #!/usr/bin/env node

    À

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

    –debug-brk va se briser sur la première ligne de javascript exécuté.

    Faire cela seul n'est pas tout à fait suffisant, car vous ne pourrez pas trouver que vous êtes un fichier js de tâche grunt dans la liste déroulante de l'inspecteur de nœud, donc vous devez modifier le fichier que vous souhaitez déboguer en ajoutant un 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 allez sur vous debugger; ligne

    Jolie kludgy, mais c'est la seule façon d'avoir trouvé jusqu'à présent.

    J'ai récemment créé un inspecteur de noeud grunt pour configurer facilement l'inspecteur des nœuds avec le reste de votre flux de travail grunt, vérifiez: https://github.com/ChrisWren/grunt-node-inspector

    Voici une section d'un Gruntfile qui illustre comment vous pouvez déboguer une tâche grunée en utilisant 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 l'inspecteur de nœud. C'est bien mieux que la proposition actuelle, il suffit d'ajouter cette tâche dans 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'); }); 

    Excellentes réponses ici. En 2017, maintenant vous pouvez le faire

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

    Ce qui imprime quelque chose comme.

    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

    Ouvrez cette URL dans Chrome, et vous allez bien!

    J'utilise Node 7.3.0 et je suis sur Mac. Vous devrez peut-être suivre certains conseils dans d'autres publications pour l'afficher sur Windows.