Ik ben van mening dat debuggen net zo'n cruciaal onderdeel is van de ontwikkelingscyclus als alle andere. Het is dus altijd een goede gewoonte om het debuggen te ontraadselen, het gemakkelijker en minder tijdrovend te maken, zodat we op tijd het werk kunnen beëindigen en stress kunnen verminderen.
Zoals de meerderheid van de talen die er zijn, biedt Node enkele uitstekende tools voor foutopsporing waarmee defecten in code gemakkelijk kunnen worden gevonden en opgelost. Ik ben altijd voorstander van het gebruik van een debugger, omdat ik persoonlijk vind dat het gebruik van debuggers echt de noodzaak voor giswerk elimineert en ons betere ontwikkelaars in het algemeen maakt.
Deze handleiding is voor ontwikkelaars en beheerders die al met Node werken. Het veronderstelt een fundamenteel begrip van de taal op praktisch niveau.
Node.js bevat een volledig uitgerust foutopsporingshulpprogramma dat toegankelijk is via een eenvoudig TCP-protocol en een ingebouwde debug-client.
Bijvoorbeeld om de debugger te gebruiken om een bestand met de naam te debuggen script.js
, u kunt eenvoudig het knooppunt bellen met behulp van de debug
vlag als zodanig:
$ node debug script.js < debugger listening on port 5858 connecting… ok debug>
Nu dat je een foutopsporingssessie hebt gestart, overal in je script die je belt debugger
van zal een breekpunt zijn voor de debugger.
Laten we bijvoorbeeld een debugger-statement toevoegen aan script.js:
foo = 2; setTimeout (() => debugger; console.log ('bugger');, 1000); console.log ( 'de');
Als we nu dit script uitvoeren, wordt de debugger aangeroepen op ons breekpunt en kunnen we het scriptbeheer regelen via de cont
of volgende
commando's (c
of n
in het kort).
We kunnen de uitvoering van het script op elk gewenst moment onderbreken met behulp van p
.
$ node debug script.js < debugger listening on port 5858 connecting… ok break in /home/tom/web/envatodebug/myscript.js:1 1 foo = 5; 2 setTimeout(() => 3 debugger; debug> cont < de break in /home/tom/web/envatodebug/myscript.js:3 1 foo = 5; 2 setTimeout(() => 3 debugger; 4 console.log ('bugger'); 5, 1000); debug> volgende pauze in /home/tom/web/envatodebug/myscript.js:4 2 setTimeout (() => 3 debugger; 4 console.log ('bugger'); 5, 1000); 6 console.log ('de'); debug> volgende < bugger break in /home/tom/web/envatodebug/myscript.js:5 3 debugger; 4 console.log('bugger'); 5 , 1000); 6 console.log('de'); 7 debug> ophouden
$ node debug script.js < debugger listening on port 5858 connecting… ok debug> repl Druk op Ctrl + C om debug repl> foo 2> 2 + 2 4 te verlaten
Met de Read-Eval-Print-Loop van de debugger kunt u tijdens de uitvoering interactief code invoeren en zo toegang krijgen tot de status van de toepassing en al zijn variabelen en methoden op het moment dat de uitvoering wordt verbroken. Dit is een zeer krachtige tool die u kunt gebruiken om uw app snel te ontsmetten.
Over het algemeen is de REPL beschikbaar als een standalone en als onderdeel van de foutopsporing en kunt u JavaScript interactief uitvoeren. Typ bijvoorbeeld gewoon knooppunt
bij de prompt zonder opties, en je krijgt een REPL-interface die je kunt intoetsen en de output kunt zien.
Eerder noemde ik de cont
en volgende
(c
en n
), waarmee we de uitvoering van de code kunnen voortzetten zodra een onderbrekingspunt is bereikt. Bovendien kunnen we tijdens het doorlopen van de code ook naar een methode stappen of naar de bovenliggende scope gaan.
Gebruik de commando's stap
om in en te stappen uit
uitstappen, of s
en O
in het kort.
Gebruik backtrace
of bt
om een uitvoer van de backtrace voor het huidige uitvoeringsframe te krijgen.
Gebruik herstarten
of r
om uw script opnieuw te starten vanaf het begin van de uitvoering.
Geavanceerde gebruikers kunnen ook toegang krijgen tot de foutopsporingsfunctie door Node.js te starten met de --debug
opdrachtregel, of door een bestaand Node.js-proces te signaleren met SIGUSR1
.
Zodra op deze manier een proces in de foutopsporingsmodus is ingesteld, kan het vervolgens worden verbonden door de debugger Node.js te gebruiken door ofwel de pid
van het lopende proces of via een URI-referentie (bijv localhost: port
) om de luistervrijgrijger aan te sluiten:
node debug -p
verbindt met het proces via de pid
.knooppunt debug
maakt via de URI verbinding met het proces zoals localhost: 5858
.Naast de CLI-foutopsporingsprogramma biedt Node Inspector ook een GUI-inspecteur in de webbrowser (momenteel alleen ondersteuning voor Chrome en Opera).
Om de debugger te gebruiken, installeer eenvoudig als volgt:
npm install -g node-inspector
Nu we de Node Inspector hebben geïnstalleerd, kunnen we onze script.js debuggen met:
node-debug script.js
Je shell zal nu het volgende uitvoeren en waarschijnlijk de webbrowser openen naar de URL als je Chrome of Opera hebt ingesteld als standaard in je ontwikkelings-OS.
Node Inspector is nu beschikbaar via http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 Debugging 'script.js' Debugger luisteren op poort 5858
In uw webbrowser kunt u nu uw toepassing debuggen in een soortgelijke omgeving als het pakket met ontwikkelaarstools. Het instellen van onderbrekingspunten en weergavecode is nu geïntegreerd in uw browserweergave. Genieten!
Foutopsporing hoeft geen nachtmerrie te zijn en hoeft ook niet stressvol te zijn.
Het instellen van onderbrekingspunten en het doorlopen van code is zo eenvoudig in Node. Het is een zeer vergelijkbare ervaring voor Ruby, en als je probeert een applicatie te begrijpen die je hebt gekregen, is het openen van de app in de debug-modus en het onderbreken van de uitvoering een fantastische manier om te leren in een snel tijdsbestek.