Comment déboguer une application serveur Node.js?
En ce moment, j'utilise principalement le débogage des alertes avec des instructions d'impression comme ceci:
sys.puts(sys.inspect(someVariable));
Il doit y avoir une meilleure façon de déboguer. Je sais que Google Chrome dispose d'un débogueur en ligne de commande. Ce débogueur est-il également disponible pour Node.js?
javascript
node.js
debugging
google-chrome-devtools
Fabian Jakobs
la source
la source
--inspect-brk
INSTEAD OF--inspect
si vous souhaitez déboguer le code serveur réel au moment du chargement. Voir stackoverflow.com/questions/59596138Réponses:
l'inspecteur de nœuds pourrait sauver la situation! Utilisez-le depuis n'importe quel navigateur prenant en charge WebSocket . Points d'arrêt, profileur, livecoding, etc ... C'est vraiment génial.
Installez-le avec:
Exécutez ensuite:
la source
Débogage
Profilage
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
Tracé
Enregistrement
Bibliothèques qui produisent des informations de débogage
Bibliothèques qui améliorent les informations de trace de pile
Analyse comparative
ab -n 100000 -c 1 http://127.0.0.1:9778/
Autre
Héritage
Ceux-ci ont l'habitude de fonctionner mais ne sont plus maintenus ou ne s'appliquent plus aux versions de nœuds modernes.
la source
look
module, comme indiqué dans stackoverflow.com/questions/12864221/nodejs-memory- profilagenprof
+v8.log
denode --prof
.Le débogueur V8 publié dans le cadre des outils de développement Google Chrome peut être utilisé pour déboguer des scripts Node.js. Une explication détaillée de la façon dont cela fonctionne peut être trouvée dans le wiki Node.js GitHub .
la source
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
Noeud a son propre construit dans débogueur GUI de la version 6.3 ( en utilisant les DevTools de Chrome)
Passez simplement le drapeau de l'inspecteur et vous recevrez une URL à l'inspecteur:
Vous pouvez également casser sur la première ligne en passant à la
--inspect-brk
place.la source
La version 0.3.4+ de Node.js a un support de débogage intégré.
node debug script.js
Manuel: http://nodejs.org/api/debugger.html
la source
--debug
àdebug
sans les tirets. C'est ainsi que je l'ai finalement fait fonctionner. C'est déroutant--debug
etdebug
faire deux choses différentes.app is already running...
", lorsque j'essaie de continuer et que je rencontre une instruction qui essaie d'obtenir une entrée, elle me renvoie à l'invite de débogage au lieu de me laisser entrer l'entrée requise.Visual Studio Code sera mon choix pour le débogage. Pas de frais généraux pour installer des outils ou des
npm install
trucs. Définissez simplement 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 basé surElectron, sur lequel sont construits des éditeurs comme Atom.la source
J'utilise personnellement JetBrains WebStorm car c'est le seul IDE JavaScript que j'ai trouvé, ce qui est parfait pour le frontend et le backend JavaScript.
Il fonctionne sur plusieurs systèmes d'exploitation et intègre le débogage Node.js (ainsi qu'une tonne d'autres choses] ( http://www.jetbrains.com/webstorm/features/index.html ).
Mes seuls «problèmes» / éléments de liste de souhaits
sontétaient :Il semble être plus gourmand en ressources sur Mac que sur WindowsCela ne semble plus être un problème dans la version 6.Ce serait bien s'il avait un support Snippet (comme ceux de Sublime Text 2 - c'est-à-dire tapez 'fun' et appuyez sur 'tab' pour mettre une fonction.Voir le commentaire @WickyNilliams ci-dessous - Avec les modèles en direct, vous avez également la prise en charge des extraits.la source
Beaucoup de bonnes réponses ici, mais j'aimerais ajouter mon point de vue (en fonction de l'évolution de mon approche)
Journaux de débogage
Avouons-le, nous aimons tous un bien
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 trop, au moins ajoutez un peu de bling à vos journaux avec le débogage de Visionmedia .Débogage interactif
Aussi pratique que puisse être la consignation de la console, pour déboguer professionnellement, vous devez retrousser vos manches et rester coincé. Définissez des points d'arrêt, parcourez votre code, inspectez les étendues et les variables pour voir ce qui cause ce comportement étrange. Comme d'autres l'ont mentionné, l' inspecteur de nœuds est vraiment le genou des abeilles. 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 , voici un guide pratique pour déboguer à partir de là.
Traces de pile
Par défaut, nous ne pouvons pas tracer une série d'opérations sur différents cycles de la boucle d'événements (ticks). Pour contourner cela, 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 qu'il a provoqué des fuites désagréables? Utilisez heapdump et Chrome DevTools pour comparer certains instantanés et voir ce qui change.
Pour quelques articles utiles, consultez
Si vous avez envie de regarder une vidéo, alors
Quel que soit le chemin que vous choisissez, assurez-vous simplement de comprendre comment vous déboguez
la source
Theseus est un projet d'Adobe research qui vous permet de déboguer votre code Node.js dans leurs supports d' édition Open Source . Il possède des fonctionnalités intéressantes telles que la couverture de code en temps réel, l'inspection rétroactive, l'arborescence d'appels asynchrones.
la source
Les outils Node.js pour Visual Studio 2012 ou 2013 incluent un débogueur. La vue d'ensemble ici indique que "les outils Node.js pour Visual Studio incluent une prise en charge complète du débogage des applications de nœuds". Étant nouveau dans Node.js, mais ayant une expérience en .NET, j'ai trouvé que cet ajout était un excellent moyen de déboguer les applications Node.js.
la source
Visual Studio Code a un support de débogage Node.js vraiment agréable. Il est gratuit, open source et multiplateforme et fonctionne sous Linux, OS X et Windows.
Vous pouvez même déboguer des tâches de grognement et de gorgée , si vous en avez besoin ...
la source
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/sa/iron-node .
Un débogueur visuel multiplateforme open source.
Installation:
npm install iron-node -g;
Déboguer:
iron-node yourscript.js;
la source
Si vous utilisez l' IDE Atom , vous pouvez installer le
node-debugger
package.la source
Utilisation de Chrome version 67.0.3396.62 (+)
Il y aura une autre fenêtre DevTools qui apparaîtra spécifiquement pour le débogage de l'application de nœud.
la source
J'ai créé un petit outil soigné appelé pry.js qui peut vous aider.
Mettez une simple déclaration quelque part dans votre code, exécutez votre script normalement et le nœud arrêtera le thread actuel vous donnant accès à toutes vos variables et fonctions. Affichez / modifiez / supprimez-les à volonté!
la source
Il y a un client de débogueur de ligne de commande intégré dans Node.js. L'IDE Cloud 9 a également un débogueur (visuel) plutôt sympa .
la source
Visual Studio Code fonctionnera pour nous dans le débogage.
la source
J'ai préparé une courte amorce de débogage Node.js sur l'utilisation de l' inspecteur de nœuds pour ceux qui ne savent pas par où commencer.
la source
Utilisez Webstorm! Il est parfait pour déboguer les applications Node.js. Il a un débogueur intégré. Consultez les documents ici: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
la source
Démarrez votre processus de nœud avec l' indicateur --inspect .
node --inspect index.js
puis Ouvrir
chrome://inspect
en chrome. Cliquez sur le lien "Ouvrir les DevTools dédiés pour le nœud" ou installez ce extension Chrome pour ouvrir facilement les DevTools Chrome.Pour plus d'informations, reportez-vous à ce lien
la source
Si vous avez besoin d'une bibliothèque de journalisation puissante 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 ou une pile d'appels, prend en charge la console couleur et prend en charge la base de données, le transport de fichiers et de flux facilement. Je suis l'auteur.
la source
En supposant que vous avez installé node-inspector sur votre ordinateur (sinon, tapez simplement 'npm install -g node-inspector'), il vous suffit d'exécuter:
Et collez l'URI de la ligne de commande dans un navigateur WebKit (Chrome / Safari).
la source
Juste pour être complet:
Le plug-in PyCharm 3.0 + Node.js offre une expérience de développement + exécution + débogage impressionnante .
la source
IntelliJ fonctionne à merveille pour Node.js.
De plus, IntelliJ prend bien en charge l '«assistance de code».
la source
Il existe de nombreuses possibilités ...
La prise en charge du débogage est souvent implémentée à l'aide du protocole de débogage v8 ou du protocole de débogage Chrome plus récent .
la source
Il y a le nouveau projet Nodeclipse open source (en tant que plugin Eclipse ou Enide Studio ):
Nodeclipse est devenu n ° 1 dans le Top 10 des nouveaux plugins Eclipse pour 2013 . Il utilise un débogueur V8 modifié (de Google Chrome Developer Tools pour Java).
Nodeclipse est un logiciel open source gratuit publié au début de chaque mois .
la source
L' IDE NetBeans prend en charge Node.js depuis la version 8.1 :
Références supplémentaires:
la source
Utilisez ces commandes
la source
ndb est une expérience de débogage améliorée pour Node.js, activée par Chrome DevTools
https://github.com/GoogleChromeLabs/ndb
la source
Un moyen rapide et sale de déboguer de petits scripts Node.js avec votre débogueur de navigateur préféré serait d'utiliser browserify . Notez que cette approche ne fonctionne pas avec les applications qui nécessitent des bibliothèques d'E / S natives, mais elle est assez bonne pour la plupart des petits scripts.
Déplacez maintenant tous vos
var x = requires('x')
appels dans unrequires.js
fichier et exécutez:(L'inconvénient ici est que vous devez soit déplacer, soit commenter
requires
dans tous vos fichiers.)Incluez le
bundle.js
dans un fichier HTML comme ceci:Maintenant, chargez le fichier dans votre navigateur et appuyez sur F12et alto: déboguer dans le navigateur.
la source