Comment déboguer Nœud.js applications?

comment déboguer un noeud.js serveur d'application?

en ce moment j'utilise surtout "alert debugging avec des déclarations d'impression comme ceci:

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

Il doit y avoir une meilleure façon de débogage. Je sais que Google Chrome a un débogueur en ligne de commande. Ce débogueur est-il disponible pour Node?js?

1418
demandé sur Peter Mortensen 2009-12-16 01:50:07

30 réponses

node-inspector pourrait sauver la journée! Utilisez-le à partir de n'importe quel navigateur supportant WebSocket . Les points d'arrêt, de profils, de livecoding, etc... Il est vraiment génial.

installez - le avec:

npm install -g node-inspector

puis exécuter:

node-debug app.js
1196
répondu daralthus 2016-01-13 15:23:04

débogage

profilage

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

Heapdumps

Flamegraphs

Tracer

Journalisation

Bibliothèques de sortie des informations de débogage

Bibliothèques qui améliorent la trace de la pile de l'information

Benchmarking

autres

Héritage

ceux-ci sont utilisés pour travailler mais ne sont plus entretenus ou ne s'appliquent plus à versions modernes de noeuds.

679
répondu balupton 2016-05-13 22:18:43

le débogueur V8 publié dans le cadre du Google Chrome Developer Tools peut être utilisé pour déboguer Node.scripts js. Une explication détaillée de la façon dont cela fonctionne peut être trouvée dans le noeud .js GitHub wiki .

213
répondu Fabian Jakobs 2018-08-31 13:27:29

Node a son propre construit dans GUI debugger à partir de la version 6.3 (en utilisant les DevTools de Chrome)

Nodes builtin GUI debugger

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

node --inspect server.js

vous pouvez aussi casser sur la première ligne en passant --inspect-brk à la place.

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

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

# start the debugger with inspect
inspect script.js
155
répondu Alister Norris 2017-04-24 09:46:49

Node.la version 0.3.4+ DE js a un support de débogage intégré.

node debug script.js

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

85
répondu JulianW 2012-12-21 16:56:03

le Code de Visual Studio sera mon choix pour le débogage. Pas de frais généraux d'installation d'outils ou de matériel npm install . Il suffit de régler le point de départ de votre application dans le paquet.json et VSCode créeront automatiquement un fichier de configuration à l'intérieur de votre solution. Il est construit sur Electron , sur lequel les éditeurs comme Atom sont construits.

VS Code donne similaire débogage de l'expérience que vous pourriez avoir avait dans D'autres IDEs comme VS, Eclipse, etc.

enter image description here enter image description here

54
répondu Shreyas 2016-09-25 15:03:40

j'utilise personnellement JetBrains WebStorm comme C'est le seul IDE JavaScript que j'ai trouvé qui est grand pour les frontend et backend JavaScript.

il fonctionne sur plusieurs OS et a noeud.débogage js intégré (ainsi qu'une tonne d'autres choses) ( http://www.jetbrains.com/webstorm/features/index.html ).

Mon seul les "questions" /articles la liste d'envies sont ont été :

  1. Il semble être plus gourmandes en ressources sur Mac que Windows qu'Il ne semble plus un problème dans la version 6.
  2. Ce serait bien si elle avait Extrait de soutien (comme ceux de Sublime Text 2 - c'est à dire de type " fun " et appuyez sur la touche 'tab' pour le mettre en fonction. voir le commentaire de @WickyNilliams ci - dessous-avec les gabarits en direct, vous avez aussi le soutien de snippet.
52
répondu isNaN1247 2014-08-12 20:26:03

Theseus est un projet D'Adobe research qui vous permet de déboguer votre noeud.code js dans leur éditeur Open Source entre parenthèses . Il a quelques traits intéressants comme la couverture de code en temps réel, l'inspection rétroactive, l'arbre d'appel asynchrone.

screenshot

36
répondu Sindre Sorhus 2014-02-19 00:11:11

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

Les Journaux De Débogage

avouons-le, nous aimons tous un bon console.log('Uh oh, if you reached here, you better run.') et parfois cela fonctionne très bien, donc si vous êtes réticents à vous en éloigner au moins Ajouter un peu de bling à vos logs avec débogage de Visionmedia .

Débogage Interactif

aussi pratique que la journalisation sur console peut-être, pour déboguer professionnellement vous avez besoin de retrousser vos manches et de se coincer dans. Définir les points de rupture, passer en revue votre code, inspecter les portées et les variables pour voir ce qui cause ce comportement étrange. Comme d'autres l'ont mentionné, noeud-inspecteur est vraiment les abeilles-genoux. Il fait tout ce que vous pouvez faire avec le débogueur intégré, mais en utilisant cette interface familière de Chrome DevTools. Si, comme moi, vous utilisez Webstorm , alors ici est un guide pratique pour déboguer à partir de là.

Les Traces De Pile

par défaut, nous ne pouvons pas tracer une série d'opérations à travers différents cycles de la boucle d'événement (ticks). Pour se déplacer dans cette avoir un regard sur longjohn (mais pas en production!).

Fuites De Mémoire

Avec Noeud.js nous pouvons avoir un processus de serveur prévu pour rester en place pendant un temps considérable. Qu'est-ce que vous faites si vous pensez qu'il a surgi certains méchants fuites? Utilisez heapdump et Chrome DevTools pour comparer quelques instantanés et voir ce qui change.


Pour certains articles utiles, découvrez

si vous vous sentez comme regarder une vidéo(s), puis

quel que soit le chemin que vous choisissez, soyez je suis sûr que vous comprenez comment vous déboguez

enter image description here

c'est une chose douloureuse

Pour regarder votre propre problème et de savoir

Que vous-même et personne d'autre ne l'a fait

Sophocle, Ajax

32
répondu Philip O'Brien 2017-06-08 10:28:05

Node.js Tools for Visual Studio 2012 ou 2013 inclut un débogueur. La vue d'ensemble ici indique "noeud.les outils js pour Visual Studio comprennent une prise en charge complète des applications de débogage des noeuds.". Étant nouveau Nœud.js, mais ayant une expérience dans .NET, j'ai trouvé que cet add in est un excellent moyen de déboguer le noeud.js applications.

21
répondu John81 2014-08-12 20:33:53

Visual Studio Code a vraiment un beau noeud.support de débogage js. Il est libre, open source et multi-plateforme et fonctionne sous Linux, OS X et Windows.

vous pouvez même déboguer tâches grunt et gulfp , si vous en avez besoin...

19
répondu hans 2015-12-20 10:41:57

j'ai écrit une approche différente de Debug Node.JS code qui est stable et extrêmement simple. Il est disponible à https://github.com/s-a/iron-node .

Enter image description here

un débogueur visuel multi-plateforme opensource.

Installation:

npm install iron-node -g;

Debug:

iron-node yourscript.js;

19
répondu Stephan Ahlf 2017-02-08 15:04:45

si vous utilisez L'IDE Atom IDE , vous pouvez installer le paquet node-debugger .

12
répondu Uchiha Itachi 2015-12-20 10:37:11

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

mettez une simple instruction quelque part dans votre code, exécutez votre script normalement et le noeud stoppera le thread courant vous donnant accès à toutes vos variables et fonctions. Afficher/modifier/supprimer à 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()
8
répondu BlaineSch 2015-01-26 00:51:12

il y a la ligne de commande intégrée debugger client dans le noeud.js. Cloud 9 IDE ont également assez agréable (visuel) débogueur .

8
répondu yojimbo87 2017-01-04 02:25:06

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

8
répondu Surendra Parchuru 2017-10-15 10:02:20

j'ai assemblé un petit noeud .js debugging primer sur l'utilisation du noeud-inspector pour ceux qui ne sont pas sûrs où commencer.

7
répondu Josh Habdas 2013-11-21 18:31:17

démarrez votre processus de noeud avec le drapeau --inspectez .

node --inspect index.js

puis ouvrir chrome://inspect en chrome. Cliquez sur le lien" Ouvrir DevTools dédiés pour Node "ou installez cette extension chrome pour ouvrir facilement les DevTools chrome.

Pour plus d'informations, reportez-vous à ce lien

6
répondu Rahul Kumar 2018-02-09 19:05:32

si vous avez besoin d'une bibliothèque de journalisation puissante pour le noeud.js, traceur https://github.com/baryon/tracer est un meilleur choix.

il produit des messages de journal avec un timestamp, le nom de dossier, le nom de méthode, le numéro de ligne, le chemin ou la pile d'appel, la console de couleur de soutien, et la base de données de soutien, le dossier, le transport de flux facilement. Je suis l'auteur.

5
répondu Baryon Lee 2014-08-12 19:29:41

en supposant que vous avez le noeud-inspector installé sur votre ordinateur (si ce n'est pas le cas, tapez simplement 'npm install-g node-inspector') vous avez juste à exécuter:

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

et coller L'URI de la ligne de commande dans un navigateur Webkit (Chrome / Safari).

5
répondu Shaheen Ghiassy 2014-08-12 20:28:14

Utilisez Webstorm! Il est parfait pour le Nœud de débogage.js applications. Il a un débogueur intégré. Consultez les docs ici: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html

5
répondu OneMoreQuestion 2016-07-25 19:13:43

il y a le nouveau open-source Nodeclipse projet (comme un plugin Eclipse ou Enide Studio ):

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

Nodeclipse est devenu #1 dans Eclipse Top 10 nouveaux Plugins pour 2013 . Il utilise un débogueur modifié V8 (à partir de Google Chrome Developer Tools pour Java).

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

4
répondu Paul Verest 2015-12-20 10:34:04

Utilisant La Version Chrome 67.0.3396.62 ( + )

  1. Exécuter nœud app

node --inspecter-brk=0.0.0.0:9229 serveur.js(serveur de nom de fichier js)

  1. Parcourez votre application en chrome par exemple "localhost: port"
  2. Open DevTools.
  3. cliquez sur l'icône du noeud à côté de l'icône de l'appareil responsive.

enter image description here

il y aura une autre fenêtre DevTools qui s'ouvrira spécifiquement pour déboguer l'application node.

enter image description here

4
répondu babidi 2018-09-22 10:54:55

IntelliJ fonctionne merveilleusement pour le noeud.js.

de plus, IntelliJ supporte bien le "Code Assistance".

3
répondu 卢声远 Shengyuan Lu 2015-08-05 03:34:42

il y a beaucoup de possibilités...

en charge le Débogage est souvent mise en œuvre à l'aide de la v8 de Débogage Protocole ou le plus récent Chrome Débogage Protocole .

3
répondu cmd 2017-01-21 14:19:13

une façon rapide et sale de déboguer un petit noeud.les scripts js avec votre favori débogueur de navigateur serait d'utiliser browserify . Notez que cette approche ne fonctionne pas avec les applications qui nécessitent des bibliothèques natives d'E/S, mais elle est suffisante pour la plupart des petits scripts.

$ npm install -g browserify

déplacez maintenant tous vos appels var x = requires('x') dans un fichier requires.js et lancez:

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

(le revers de La médaille voici que vous devez soit déplacer ou commenter le requires dans tous vos fichiers.)

Inclure bundle.js dans un fichier HTML comme ceci:

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

maintenant chargez le fichier dans votre navigateur et appuyez sur F12 et viola: debug dans le navigateur.

2
répondu Gerold Meisinger 2015-12-20 10:39:23

le NetBeans IDE a eu noeud.prise en charge de js depuis version 8.1 :

<...>

Nouveautés

Node.js le Développement de l'Application

  • Nouveau Noeud.js assistant de projet
  • Nouveau Noeud.js Express wizard
  • Éditeur JavaScript Amélioré
  • nouveau support pour le noeud tournant.js applications
  • nouveau support pour le noeud de débogage.js applications.

<...>

autres références:

  1. NetBeans Wiki / NewAndNoteworthyNB81 .
  2. noeud.js Express App in NetBeans IDE, Geertjan-Oracle .
2
répondu Sergey Brunov 2015-12-20 10:47:06
node-debug -p 8888 scriptFileName.js
1
répondu matt burns 2014-05-07 15:53:27

je voudrais utiliser BON par Walmart Labs. Il fera le travail, et il 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
répondu Doron Segal 2015-12-20 10:36:08