web-dev-qa-db-fra.com

Comment déboguer les applications Node.js?

Comment déboguer une application serveur Node.js?

Actuellement, j'utilise principalement alert debugging avec des instructions print comme ceci:

sys.puts(sys.inspect(someVariable));

Il doit y avoir un meilleur moyen de déboguer. Je sais que Google Chrome a un débogueur de ligne de commande. Ce débogueur est-il disponible pour Node.js également?

1458
Fabian Jakobs

Le V8 debugger publié dans le cadre des outils de développement Google Chrome peut être utilisé pour déboguer les scripts Node.js. Une explication détaillée de la façon dont cela fonctionne peut être trouvée dans le Node.js GitHub wiki .

230
Fabian Jakobs

nœud-inspecteur pourrait sauver la journée! Utilisez-le depuis n'importe quel navigateur supportant WebSocket . Points d'arrêt, profileur, codage de livraisons, etc ... C'est vraiment génial.

Installez-le avec:

npm install -g node-inspector

Puis lancez:

node-debug app.js
1218
daralthus

Débogage

Profilage

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

Flamegraphs

Tracé

Enregistrement

Bibliothèques fournissant des informations de débogage

Bibliothèques améliorant les informations de trace de pile

Benchmarking

Autre

Héritage

Celles-ci fonctionnent, mais ne sont plus maintenues ou ne sont plus applicables aux versions de nœud modernes.

696
balupton

Le nœud a son propre débogueur d'interface graphique intégré à partir de la version 6.3 (en utilisant les outils de développement de Chrome)

Nodes builtin GUI debugger

Passez simplement le drapeau de l'inspecteur et vous recevrez une adresse URL à l'inspecteur:

node --inspect server.js

Vous pouvez également interrompre la lecture sur la première ligne en passant --inspect-brk à la place.

Pour ouvrir une fenêtre Chrome automatiquement, utilisez le module inspect-process .

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js
164
Alister Norris

Node.js version 0.3.4+ prend en charge le débogage intégré.

node debug script.js

Manuel: http://nodejs.org/api/debugger.html

86
JulianW

Code Visual Studio sera mon choix pour le débogage. Pas de surcharge pour installer des outils ou des éléments npm install . Il suffit de définir le point de départ de votre application dans package.json et VSCode créera automatiquement un fichier de configuration dans votre solution. Il est construit sur Electron , sur lequel sont construits des éditeurs comme Atom.

VS Code offre une expérience de débogage similaire à celle que vous pourriez avoir eu dans d'autres IDE comme VS, Eclipse, etc.

 enter image description here  enter image description here

59
Shreyas

Personnellement, j'utilise JetBrains WebStorm , car c’est le seul JavaScript IDE que j’ai trouvé, ce qui est excellent pour le JavaScript frontend et backend.

Il fonctionne sur plusieurs systèmes d’exploitation et intègre le débogage Node.js (ainsi que de nombreux autres éléments) ( http://www.jetbrains.com/webstorm/features/index.html ).

Mes seuls éléments 'issues'/wishlist sont étaient:

  1. Il semble y avoir plus de ressources sur Mac que sur Windows Cela ne semble plus être un problème dans la version 6.
  2. Ce serait bien s'il avait le support Snippet (comme ceux de Sublime Text 2 - c.-à-d. Tapez 'fun' et tapez sur 'tab' pour insérer une fonction. Voir le commentaire @WickyNilliams ci-dessous - Avec les modèles en direct, vous bénéficiez également d'une prise en charge des extraits.
53
isNaN1247

Theseus est un projet d’Adobe Research qui vous permet de déboguer votre code Node.js dans leur éditeur Open Source Brackets . Il présente des fonctionnalités intéressantes telles que la couverture de code en temps réel, l'inspection rétroactive, l'arborescence des appels asynchrones.

screenshot

37
Sindre Sorhus

Beaucoup de bonnes réponses ici, mais je voudrais ajouter mon point de vue (basé sur la façon dont mon approche a évolué)

Journaux de débogage

Regardons les choses en face, nous aimons tous une bonne console.log('Uh oh, if you reached here, you better run.') et parfois cela fonctionne très bien, donc si vous êtes réticent à vous en éloigner, ajoutez au moins un peu de bling à vos journaux avec le débogage de Visionmedia

Débogage interactif

Aussi pratique que la journalisation sur console puisse être, pour déboguer professionnellement, vous devez vous retrousser les manches et rester coincé. Définissez des points d'arrêt, parcourez votre code, inspectez les étendues et les variables pour voir la cause de ce comportement étrange. Comme d'autres l'ont mentionné, inspecteur de nœuds est vraiment le genou de l'abeille. Il fait tout ce que vous pouvez faire avec le débogueur intégré, mais en utilisant cette interface bien connue de Chrome DevTools . Si, comme moi, vous utilisez Webstorm, alors ici est un guide pratique pour le débogage depuis Là.

Traces de pile

Par défaut, nous ne pouvons pas suivre une série d'opérations sur différents cycles de la boucle d'événement (ticks). Pour résoudre ce problème, jetez un œil à longjohn (mais pas en production!).

Fuites de mémoire

Avec Node.js, nous pouvons avoir un processus serveur censé rester en place pendant un temps considérable. Que faites-vous si vous pensez que des fuites se sont produites? Utilisez heapdump et Chrome DevTools pour comparer des instantanés et voir ce qui change.


Pour des articles utiles, consultez

Si vous avez envie de regarder une vidéo, alors

Quel que soit le chemin que vous choisissez, assurez-vous de bien comprendre comment vous déboguez.

 enter image description here

C'est une chose douloureuse
Pour regarder ton propre problème et savoir
Que vous-même et personne d'autre l'ait fait 

Sophocles, Ajax

34
Philip O'Brien

Les outils Node.js pour Visual Studio 2012 ou 2013 incluent un débogueur. La vue d'ensemble ici indique "Les outils Node.js pour Visual Studio incluent une prise en charge complète du débogage des applications de nœud.". Étant nouveau pour Node.js, mais possédant une expérience en .NET, j'ai trouvé que cet ajout était un excellent moyen de déboguer des applications Node.js. 

22
John81

Code Visual Studio supporte vraiment le débogage de Nice Node.js. Il est gratuit, open source et multiplate-forme et fonctionne sous Linux, OS X et Windows.

Vous pouvez même déboguer grognons et avaler des tâches , si vous avez besoin de ...

20
hans

J'ai écrit une approche différente pour déboguer le code Node.js qui est stable et extrêmement simple. Il est disponible sur https://github.com/s-a/iron-node .

Enter image description here

Un débogueur visuel multi-plateformes opensource.

Installation:

npm install iron-node -g;

Déboguer:

iron-node yourscript.js;

19
Stephan Ahlf

Si vous utilisez Atom IDE , vous pouvez installer le package node-debugger.

13
Uchiha Itachi

J'ai créé un joli petit outil appelé pry.js qui peut vous aider.

Mettez une simple déclaration quelque part dans votre code, exécutez votre script normalement et node arrêtera le thread en cours vous donnant accès à toutes vos variables et fonctions. Visualisez/modifiez/supprimez-les à volonté!

pry = require('pryjs')

class FizzBuzz

  run: ->
    for i in [1..100]
      output = ''
      eval(pry.it) # magic
      output += "Fizz" if i % 3 is 0
      output += "Buzz" if i % 5 is 0
      console.log output || i

  bar: ->
    10

fizz = new FizzBuzz()
fizz.run()
10
BlaineSch

Utilisation de Chrome version 67.0.3396.62 (+)

  1. Exécuter l'application de nœud 

noeud --inspect-brk = 0.0.0.0: 9229 server.js (nom du fichier js du serveur)

  1. Parcourez votre application en chrome, par exemple. "localhost: port"
  2. Ouvrez DevTools.
  3. Cliquez sur l'icône du nœud à côté de l'icône du périphérique réactif.

 enter image description here

Une autre fenêtre DevTools apparaîtra spécialement pour le nœud de débogage.

 enter image description here

10
babidi

Code Visual Studio travaillera pour nous dans le débogage.

9
Surendra Parchuru

Il existe une ligne de commande intégrée client du débogueur dans Node.js. Cloud 9 IDE ont aussi de jolis Nice (visuel) debugger .

9
yojimbo87

J'ai mis en place un court amorce de débogage Node.js à l'aide de node-inspector pour ceux qui ne savent pas par où commencer.

8
Josh Habdas

Démarrez votre processus de nœud avec le drapeau --inspect.

node --inspect index.js

puis Ouvrez chrome://inspect en chrome. Cliquez sur le lien "Ouvrir les outils de développement dédiés pour Node" ou installez this extension chrome pour ouvrir facilement les outils de développement chrome.

Pour plus d'informations, reportez-vous à this link

6
Rahul Kumar

Si vous avez besoin d’une puissante bibliothèque de journalisation pour Node.js, Tracer https://github.com/baryon/tracer est un meilleur choix.

Il génère des messages de journal avec un horodatage, un nom de fichier, un nom de méthode, un numéro de ligne, un chemin d'accès ou une pile d'appels, prend en charge la console couleur et prend en charge le transport de base de données, fichier et flux. Je suis l'auteur.

6
Baryon Lee

Utilisez Webstorm! C'est parfait pour le débogage des applications Node.js. Il a un débogueur intégré. Découvrez la documentation ici: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html

6
OneMoreQuestion

En supposant que node-inspector soit installé sur votre ordinateur (sinon, tapez simplement 'npm install -g node-inspector'), vous devez simplement exécuter:

node-inspector & node --debug-brk scriptFileName.js

Et collez l’URI de la ligne de commande dans un navigateur WebKit (Chrome/Safari).

6
Shaheen Ghiassy
6
Alex

Voici le nouveau projet open-source Nodeclipse project (en tant que plugin Eclipse ou Enide Studio ):

http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

Nodeclipse est devenu n ° 1 dans Les 10 nouveaux plug-ins Eclipse en 2013 . Il utilise un V8 debugger modifié (à partir des outils de développement de Google Chrome pour Java).

Nodeclipse est un logiciel libre open source publié au début de chaque mois .

5
Paul Verest

Le NetBeans IDE est supporté par Node.js depuis version 8.1 :

<...>

Nouvelles fonctionnalités

Node.js Développement d'applications

  • Nouvel assistant de projet Node.js
  • Nouvel assistant Node.js Express
  • Editeur JavaScript amélioré
  • Nouvelle prise en charge de l'exécution des applications Node.js
  • Nouvelle prise en charge du débogage des applications Node.js.

<...>

Références supplémentaires:

  1. NetBeans Wiki/NewAndNoteworthyNB81 .
  2. Node.js Express App dans l'EDI NetBeans, Geertjan-Oracle .
4
Sergey Brunov

Il y a beaucoup de possibilités ...

La prise en charge du débogage est souvent mise en œuvre à l’aide du protocole de débogage v8 ou du protocole plus récent du protocole de débogage Chrome .

4
cmd

IntelliJ fonctionne à merveille pour Node.js.

De plus, IntelliJ supporte bien «Code Assistance».

4

Un moyen rapide et rapide de déboguer de petits scripts Node.js avec votre favori débogueur de navigateur serait d'utiliser browserify. Notez que cette approche ne fonctionne pas avec les applications nécessitant des bibliothèques d'E/S natives, mais qu'elle convient assez à la plupart des petits scripts.

$ npm install -g browserify

Maintenant, déplacez tous vos appels var x = requires('x') dans un fichier requires.js et exécutez:

$ browserify requires.js -s window -o bundle.js

(L'inconvénient est que vous devez déplacer ou commenter le requires dans tous vos fichiers.)

Incluez le bundle.js dans un fichier HTML comme suit:

<script type="text/javascript" src="bundle.js"></script>

Maintenant, chargez le fichier dans votre navigateur et appuyez sur F12 et alto: déboguer dans le navigateur.

3
Gerold Meisinger
node-debug -p 8888 scriptFileName.js
2
matt burns

ndb est une expérience de débogage améliorée pour Node.js, activée par Chrome DevTools

https://github.com/GoogleChromeLabs/ndb

2
Mukesh

Utilisez ces commandes

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
2
Zahirul Haque

Vous pouvez utiliser Node.js pur et déboguer l’application dans la console si vous le souhaitez.

Par exemple, créons un fichier factice debug.js que nous voulons déboguer et y mettons des points d'arrêt (instruction debugger):

let a = 5;
debugger;

a *= 2;
debugger;

let b = 10;
debugger;

let c = a + b;
debugger;

console.log(c);

Ensuite, vous pouvez exécuter ce fichier pour le débogage en utilisant la commande inspect:

node inspect debug.js

Cela lancera le débogueur dans la console et vous obtiendrez une sortie semblable à:

< Debugger listening on ws://127.0.0.1:9229/6da25f21-63a0-480d-b128-83a792b516fc
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3

Vous remarquerez peut-être ici que l'exécution du fichier a été arrêtée à la première ligne. À partir de ce moment, vous pouvez parcourir le fichier étape par étape à l'aide des commandes suivantes (touches de raccourci):

  • cont pour continuer,
  • next pour aller au prochain point d'arrêt,
  • in pour intervenir,
  • out à sortir
  • pause pour le suspendre

Tapons cont plusieurs fois et voyons comment passer d'un point d'arrêt à un autre:

debug> next
break in misc/debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3
debug> next
break in misc/debug.js:2
  1 (function (exports, require, module, __filename, __dirname) { let a = 5;
> 2 debugger;
  3
  4 a *= 2;
debug> next
break in misc/debug.js:4
  2 debugger;
  3
> 4 a *= 2;
  5 debugger;
  6

Nous pouvons maintenant vérifier les valeurs des variables en écrivant la commande repl. Cela vous permettra d'écrire le nom de la variable et de voir sa valeur:

debug> repl
Press Ctrl + C to leave debug repl
> a
5
> b
undefined
> c
undefined
>

Vous pouvez voir que nous avons a = 5 en ce moment et que b et c sont indéfinis.

Bien sûr, pour un débogage plus complexe, vous voudrez peut-être utiliser certains outils externes (IDE, navigateur). Vous pouvez lire plus ici

1
Oleksii Trekhleb

Ma réponse initiale était il y a quelques années avant le studio visuel.

Donc, utiliser GOOD by hapi est un excellent logiciel de journalisation mais pour le débogage, utilisez visual studio .

réponse originale (il y a longtemps): J'utiliserais BON de Walmart Labs. Cela fera le travail, et c'est très flexible:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});
1
Doron Segal

Il existe plusieurs manières de déboguer l’application Node.JS comme suit:

1) Installez devtool et lancez l'application avec

npm install devtool -g --save
devtool server.js

cela ouvrira en mode développeur chrome afin que vous puissiez mettre un point de débogage et tester.

2) déboguer avec l'inspecteur de noeud 

node-inspector

3) déboguer avec --debug

node --debug app.js 
0
Mr. Raj Kale