web-dev-qa-db-fra.com

Quelle est la bonne façon d'activer le débogueur de noeud avec le commutateur --debug-brk de mocha?

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?

63
Howard Dierking

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. (=

Pertinent: https://github.com/visionmedia/mocha/issues/247

48
ELLIOTTCABLE

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".

57
stropitek

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
51
Matthew Shanley

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

10
Trideep Gogoi

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)

3
Tom Berghuis