Quelqu'un a-t-il utilisé l' inspecteur de nœuds 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).
node-inspector
qui communique avecnode --debug
, fournissant les informations de débogage à un navigateur qui se connecte. C'est génial, car vous pouvez ensuite connecter Chrome au processus de l'inspecteur de nœuds et utiliser tous les outils de l'inspecteur Web pour déboguer votre application. github.com/dannycoates/node-inspectorRéponses:
Pour exécuter grunt dans le débogage, vous devez transmettre explicitement le script grunt au nœud:
et mettez une
debugger;
ligne dans votre tâche.node-inspector
ouvrira alors un navigateur avec des outils de débogage.Edit 28 février 2014
node-inspector
a ajouté la commandenode-debug
, qui lance le nœud dans un--debug
état et ouvre le navigateur sur lanode-inspector
page, s'arrêtant lorsqu'il atteint la premièredebugger
ligne ou définit le point d'arrêt.Edit 30 janvier 2015
Sous Windows, les choses sont un peu plus compliquées. Voir la réponse de @ e.gluhotorenko pour obtenir des instructions.
la source
$(which grunt)
c'est? Est-ce juste le Gruntfile.js que je veux déboguer? Et pourtask
dois-je mettre (en utilisantserve
comme exemple)grunt serve
ou tout simplementserve
? J'ai essayénode-debug Gruntfile.js serve
et bien d'autres choses, mais je n'arrive tout simplement pas à faire fonctionner cela. L'inspecteur de nœud s'ouvre et il se casse sur la première ligne, mais je ne peux pas entrer dans laserve
tâche même si je mets unedebugger;
ligne comme première ligne de la fonction.grunt.js
script grunt-cli . C'est le script qui exécute réellement Grunt. Si vous êtes sous Windows, consultez stackoverflow.com/a/13443026/240358 (la réponse ci-dessous) pour un emplacement possible du script grunt-cli. Cela remplacegrunt
dans votre commande - dans votre exemple, remplaceztask
parserve
Solution Windows
Courir
à partir de cmd dans le répertoire avec votre
Gruntfile.js
. N'oubliez pas de mettre ladebugger;
ligne aux endroits nécessaires.la source
grunt-cli
package: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
Pour déboguer, nous devons modifier le fichier grunt sous bin. Sur ma machine, grunt est installé globalement, donc je suis allé dans / usr / local / lib / node_modules / grunt / bin j'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 exécuté.
Faire cela seul n'est pas tout à fait suffisant, car vous ne pourrez pas trouver votre fichier js de tâche grognement dans la liste déroulante de l'inspecteur de nœuds, 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. Vous pouvez maintenant cliquer sur Continuer après la première pause, et vous vous arrêterez sur votredebugger;
ligneAssez kludgy, mais c'est le seul moyen que j'ai trouvé jusqu'à présent.
la source
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 Gruntfile qui illustre comment vous pouvez déboguer une tâche grunt en utilisant grunt-node-inspector, grunt-concurrent et grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile. js # L44-L77
la source
node --debug-brk $(which grunt) node-inspector build test
sorte de chose? J'aime ça.node-inspector
je ne vais pas quitter et autoriserbuild
ettest
courir car il fonctionne pour toujours. J'ai ajouté un lien vers un extrait de code dans lequel je l'ai configuré.node-inspector &
, de le laisser en arrière-plan et de l'appeler terminé. Avez-vous des pensées à ce sujet?grunt node-inspector
, puis je vais à l'url localhost et je ne vois aucun fichier source. Juste des outils de débogage vides.grunt node-inspector
etnode --debug-brk Gruntfile.js
de mon répertoire grunt. Cependant, lorsque je définis un point d'arrêt dans le fichier grunt, il se bloque simplement avec une erreur de connexion.J'ai effectué une tâche pour exécuter mon application et lancer l'inspecteur de nœuds. C'est bien mieux que la proposition actuelle, il vous suffit d'ajouter cette tâche dans gruntfile:
la source
Excellentes réponses ici. En 2017, maintenant vous pouvez 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 êtes prêt à partir!
J'utilise Node 7.3.0 et je suis sur Mac. Vous devrez peut-être suivre certains des conseils d'autres articles pour le faire fonctionner sous Windows.
la source
Mise à jour 2019
Si vous souhaitez lancer la tâche grognement en mode débogage et interrompre à la première ligne:
node --inspect-brk $(which grunt) taskName
Si vous souhaitez lancer la tâche grunt en mode débogage sur un port spécifique:
node --inspect-brk=8080 $(which grunt) taskName
si vous souhaitez attacher VSCODE au processus de nœud exécutant la session de débogage de grunt, utilisez la configuration suivante dans vscode:
la source