Comment puis-je déboguer des applications Node.js?
-
19-09-2019 - |
Question
Comment puis-je déboguer une application serveur Node.js?
En ce moment je suis la plupart du temps en utilisant débogage alerte avec des instructions 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. Est-ce débogueur disponible pour Node.js ainsi?
La solution 3
Le V8 débogueur publié dans le cadre de Google Chrome Developer Tools peuvent être utilisés pour déboguer Node.js scripts. Une explication détaillée de la façon dont cela fonctionne se trouve dans le Noeud .js wiki GitHub.
Autres conseils
pourrait sauver la journée! Utilisez-le à partir d'un navigateur supportant WebSocket . Les points d'arrêt, profileur, livecoding, etc ... Il est vraiment génial.
Installer avec:
npm install -g node-inspector
Ensuite, exécutez:
node-debug app.js
Debugging
- Guide de Joyent
- Debugger
- Node Inspecteur
- code Visual Studio
- Cloud9
- Supports
Profilage
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
- 0x
- jam3 / devtool puis Chrome Developer Tools Graphiques flamme
- DTrace et StackVis - en charge uniquement sur SmartOS
- clinicjs
Tracing
Connexion
Les bibliothèques que les informations de débogage de sortie
Les bibliothèques qui améliorent l'information de trace de pile
Analyse comparative
- Banc Apache:
ab -n 100000 -c 1 http://127.0.0.1:9778/
- wrk
Autres
- Trace
- Vantage
- Bugger
- Google Tracing cadre
- Guide de Paul irlandais
Héritage
Ces utiliser pour travailler, mais ne sont plus maintenues ou ne sont plus applicables aux versions de noeuds modernes.
- https://github.com/bnoordhuis/node-profiler - remplacé par intégré dans le débogage
- https://github.com/c4milo/node-webkit-agent - remplacé par un inspecteur de noeud
- https://nodetime.com/ - défunte
Noeud a sa propre construit Débogueur GUI de la version 6.3 (en utilisant les DevTools Chrome )
Il suffit de passer le drapeau de l'inspecteur et vous sera fourni avec une URL à l'inspecteur:
node --inspect server.js
Vous pouvez aussi briser sur la première ligne en passant à la place --inspect-brk
.
Pour ouvrir une fenêtre Chrome automatiquement, utiliser le href="https://github.com/jaridmargolin/inspect-process" inspecter processus Module .
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
Version Node.js 0.3.4+ a un support intégré de débogage.
node debug script.js
code Visual Studio sera mon choix pour le débogage. Pas de frais généraux d'installation des outils ou des trucs npm install
.
Il suffit de régler le point de départ de votre application dans package.json et VSCode crée automatiquement un fichier de configuration dans votre solution. Il est construit sur électronique, sur lequel les éditeurs comme Atom sont construits.
VS code donne une expérience de débogage similaire que vous pourriez avoir avait dans d'autres environnements de développement comme VS, Eclipse, etc.
J'utiliser personnellement JetBrains WebStorm car il est le seul IDE JavaScript que j'ai trouvé ce qui est idéal pour les frontend et backend JavaScript.
Il fonctionne sur plusieurs systèmes d'exploitation et a Node.js débogage intégré (ainsi qu'une tonne d'autres choses] ( Sublime Text 2 - à savoir le type 'fun' et appuyez sur « onglet » de mettre en fonction Voir @WickyNilliams commentaire ci-dessous -.. Avec le soutien Modèles live vous ont également extrait de code
Beaucoup de grandes réponses ici, mais je voudrais ajouter mon avis (basé sur la façon dont mon approche a évolué)
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éticent à aller trop loin au moins ajouter un peu de bling à vos journaux avec debug de Visionmedia.
Debugging interactif
pratique que l'enregistrement de la console peut être, pour déboguer dont vous avez besoin professionnellement à retrousser vos manches et de se coincer dans. Set points d'arrêt, dans votre code, inspectez champs et variables pour voir ce qui cause ce comportement bizarre. Comme d'autres l'ont mentionné, 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 DevTools Chrome. Si, comme moi, vous utilisez WebStorm , puis sur ici est un guide pratique pour le débogage à partir de là.
Stack Traces
Par défaut, on ne peut pas tracer une série d'opérations dans les différents cycles de la boucle d'événements (tiques). Pour contourner ce problème jeter un oeil à Longjohn (mais pas dans la production!).
Fuites de mémoire
Avec Node.js, nous pouvons avoir un processus serveur devrait rester pour un temps considérable. Que faites-vous si vous pensez qu'il a jailli des fuites désagréables? Utilisez heapdump et Chrome DevTools de comparer des instantanés et de voir ce qui change.
Pour certains articles utiles, consultez
Si vous vous sentez comme regarder une vidéo (s) puis
- Netflix JS pourparlers - Mise au point Node.js dans la production
- vidéo Intéressant le groupe de travail sur le suivi Node.js le traçage et le débogage
- vraiment informatif vidéo de 15 minutes sur le nœud-inspecteur
Quel que soit le chemin que vous choisissez, juste être sûr que vous comprenez comment vous déboguez
Il est une chose douloureuse
Pour regarder votre propre problème et savoir
Que vous-même et personne d'autre n'a faitSophocle, Ajax
Node.js Outils pour Visual Studio 2012 ou 2013 comprend un débogueur. La vue d'ensemble indique « Outils Node.js pour Visual Studio inclut un support complet pour le débogage des applications de nœud. ». Être nouveau à Node.js, mais ayant un fond dans .NET, j'ai trouvé ce module complémentaire pour être un excellent moyen pour déboguer les applications Node.js.
code Visual Studio a vraiment sympa Node.js support de débogage. Il est gratuit, open source et multi-plateforme et fonctionne sur Linux, OS X et Windows.
Vous pouvez même débogage tâches grognement et Gulp , si vous devez ...
J'ai écrit une approche différente pour déboguer le code Node.js qui est stable et est extrêmement simple. Il est disponible à https://github.com/sa/iron-node .
Un débogueur visuel opensource multi-plateforme.
Installation:
npm install iron-node -g;
Debug:
iron-node yourscript.js;
Si vous utilisez le Atom IDE , vous pouvez installer le package node-debugger
.
Utilisation de la version Chrome 67.0.3396.62 (+)
- Exécuter application noeud
noeud --inspect-BRK = 0.0.0.0: 9229 server.js (nom de fichier de serveur)
- Rechercher votre application en chrome par exemple "Localhost: port"
- DevTools Ouvrir.
- Cliquez sur l'icône de nœud à côté de l'icône de dispositif sensible.
Il y aura une autre fenêtre DevTools qui pop spécifiquement pour le débogage de l'application nœud.
J'ai créé un petit outil appelé pry.js qui peut vous aider.
Mettre une simple déclaration quelque part dans votre code, exécutez votre script normalement et nœud arrêter le thread courant en vous donnant accès à toutes vos variables et fonctions. Afficher / modifier / les 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()
Il est intégré dans la ligne de commande client débogueur dans les Node.js. Cloud 9 IDE ont également assez agréable (visuel) débogueur.
code Visual Studio va travailler pour nous dans le débogage.
Je mets ensemble une courte Node.js débogage primaire sur l'utilisation du < a href = "https://github.com/node-inspector/node-inspector" rel = "nofollow noreferrer"> node-inspecteur pour ceux qui ne savent pas où commencer.
Utilisez WebStorm! Il est parfait pour le débogage des applications Node.js. Il a un débogueur intégré. Consultez la documentation ici: https: // www .jetbrains.com / help / WebStorm / 2016,1 / rodage et le débogage noeud-js.html
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 transmet les messages du journal avec un horodatage, nom de fichier, nom de la méthode, le numéro de ligne, pile de chemin ou appel, support console couleur, et la base de données de support, fichier, le transport de flux facilement. Je suis l'auteur.
En supposant que vous avez nœud inspecteur installé sur votre ordinateur (sinon, il suffit de taper « installer NPM nœud inspecteur -g ») il vous suffit de lancer:
node-inspector & node --debug-brk scriptFileName.js
coller l'URI de la ligne de commande dans un WebKit (Chrome / Safari) navigateur.
Juste pour être complet:
Le PyCharm 3.0 + Node.js Plugin offre un développement impressionnant + run + débogage expérience .
Commencez votre processus de nœud avec -. Inspecter drapeau
node --inspect index.js
et puis chrome://inspect
Open in chrome. Cliquez sur le lien « Open DevTools dédiés pour le nœud » ou installer ce extension de chrome pour ouvrir facilement DevTools de chrome.
Pour plus d'informations reportez-vous à ce lien
Il y a beaucoup de possibilités ...
- rel="noreferrer"> comprend un utilitaire de débogage
- noeud-inspecteur
- éditeurs de code / IDEs (voir les instructions de débogage pour une des options suivantes)
Prise en charge de débogage est souvent mis en œuvre en utilisant le v8 Protocole Debugging ou plus récent < a href = "https://developer.chrome.com/devtools/docs/debugger-protocol" rel = "noreferrer"> Protocole Debugging Chrome .
Il est le nouveau projet open-source Nodeclipse (comme un plug-in Eclipse ou Enide studio ):
Nodeclipse est devenu n ° 1 à rel="nofollow Eclipse Top 10 Plugins pour 2013 . Il utilise une version modifiée V8 débogueur (Google Chrome Developer Tools pour Java).
Nodeclipse est un logiciel gratuit open-source publié au début de chaque mois .
IntelliJ fonctionne à merveille pour Node.js.
En outre, IntelliJ soutient bien «Code d'aide.
Le a bénéficié du soutien Node.js depuis Version 8.1 :
<...>
Nouvelles fonctionnalités
Développement d'applications Node.js
- Nouveau Node.js assistant de projet
- Assistant New Node.js express
- JavaScript Enhanced Editor
- Nouveau support pour l'exécution d'applications Node.js
- Nouveau support pour le débogage des applications Node.js.
<...>
Références supplémentaires:
Cette commande
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
Un moyen rapide et sale pour déboguer les petits scripts Node.js avec votre débogueur favori du navigateur serait d'utiliser browserify . Notez que cette approche ne fonctionne pas avec toutes les applications qui nécessitent d'E / S natives des bibliothèques, mais il est assez bon pour les scripts les plus petits.
$ npm install -g browserify
Maintenant déplacer 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 soit déplacer ou commenter la requires
dans tous vos fichiers.)
Inclure le bundle.js
dans un fichier HTML comme ceci:
<script type="text/javascript" src="bundle.js"></script>
Maintenant charger le fichier dans votre navigateur, puis appuyez sur F12 et alto. Debug dans le navigateur
NDB est une expérience de débogage amélioré pour Node.js, activé par Chrome DevTools