J'ai des instructions de débogage dans mon module en cours de test et je veux exécuter mocha avec --debug-brk set et atteindre mon point d'arrêt afin de pouvoir inspecter l'état de mon module. Malheureusement, chaque fois que je lance mocha avec cette option, je me retrouve avec un curseur vide sur la ligne suivante. Je peux saisir du texte, mais rien ne semble traiter mes commandes (cela ne ressemble certainement pas au débogueur de noeud):
$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]
Suis-je en train de faire quelque chose de mal avec la façon dont je lance le moka?
Pour répondre à la question d'origine, même si je vous suggère également de consulter node-inspector
: vous pouvez utiliser le débogueur CLI intégré au nœud via mocha avec l'option debug
, au lieu de --debug
ou --debug-brk
drapeaux. (Remarquez l'absence de tirets.)
Dans votre exemple, ce serait plutôt:
$ mocha debug tests.js -R spec débogueur écoute sur le port 5858 connexion ... ok pause dans node_modules/mocha/bin/_mocha: 7 5 */ 6 7 var programme = require ('commander') 8, sprintf = require ('util'). format 9, path = require ('path') debug> [CURSOR]
Encore une fois, debug
comme ci-dessus en gras, sans tirets. (=
En utilisant une version récente de nodejs ( > = v6.3. ) et mocha ( > = 3.1. ), vous pouvez utiliser intégration de l'inspecteur V8 .
L'intégration de V8 Inspector permet d'attacher Chrome DevTools aux instances Node.js pour le débogage et le profilage
Utilisation
--inspect
active l'intégration de l'inspecteur V8 et --debug-brk
ajoute un point d'arrêt au début. Depuis nodejs v7.6. et mocha v3.3. , vous pouvez utiliser le --inspect-brk
raccourci pour --inspect --debug-brk
$ mocha --debug-brk --inspect
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
Avec des scripts npm
Si vous avez un script de test npm qui utilise mocha, vous pouvez passer les options de npm à votre script mocha en utilisant le délimiteur fin de l'option--
:
$ npm test -- --inspect --debug-brk
Astuce Chrome
Au lieu de copier-coller l'URL à chaque fois, accédez à chrome://inspect
et cliquez sur le lien approprié dans la section "Cible distante".
J'ai pu faire fonctionner ceci en utilisant node-inspector . Je lance mon test comme vous le montrez dans un Shell:
mocha --debug-brk mocha/test.js
puis exécutez node-inspector dans un deuxième shell:
node-inspector
Afficher l'URL que crache l'inspecteur de noeud dans un navigateur me permet de déboguer avec l'inspecteur Web.
http://127.0.0.1:8080/debug?port=5858
Si vous avez installé node-insector, vous pouvez déboguer vos tests Mocha sans exécuter réellement node-inspector au préalable. Le plus simple est de
node-debug _mocha
Cela devrait commencer à déboguer les tests de nœuds dans chrome (fonctionne également sur Safari)
L'une des raisons pour lesquelles j'ai vu que les tests ne fonctionnent pas est parfois que vous avez donné d'essayer http: // localhost: 8080/debug? Port = 5858 ou http://127.0.0.1: 8080/debug? Port = 5858
exécuter moka avec le drapeau --inspect-brk
et cliquez sur "ouvrir les DevTools dédiés pour le nœud" dans chrome de la page chrome://inspect
. Dans la fenêtre DevTools dédiée, ajoutez la connexion localhost:9229
pour se connecter automatiquement.
Ajoutez également une instruction debugger
au fichier que vous souhaitez déboguer.
(ceci utilise les dernières versions de node et chrome en octobre 2017)