Jeg føler at debugging er like viktig en del av utviklingssyklusen som noe annet. Så det er alltid god praksis å demystifisere jobben med feilsøking, noe som gjør det enklere og mindre tidkrevende, slik at vi kan avslutte arbeidet i tide og redusere stress.
Som de fleste språk der ute, gir Node noen gode feilsøkingsverktøy som gjør feil i kode lett funnet og fikset. Jeg taler alltid for bruken av en debugger fordi jeg personlig finner å bruke debuggere virkelig eliminerer behovet for noe gjetning og gjør oss bedre utviklere generelt.
Denne veiledningen er for utviklere og administratorer som allerede arbeider med Node. Det forutsetter en grunnleggende forståelse av språket på praktisk nivå.
Node.js inneholder et komplett feilsøkingsverktøy som er utilgjengelig, og er tilgjengelig via en enkel TCP-basert protokoll og innebygd feilsøkingsklient.
For eksempel, for å bruke feilsøkingsprogrammet til å feilsøke en fil som heter script.js
, du kan bare ringe node ved hjelp av debug
flagg slik:
$ node debug script.js < debugger listening on port 5858 connecting… ok debug>
Nå som du har startet en feilsøkingsøkt, hvor som helst i skriptet du ringer debugger
fra vil være et brytepunkt for debuggeren.
Så, for eksempel, la vi legge til en debugger-setning til script.js:
foo = 2; setTimeout (() => debugger; console.log ('bugger');, 1000); console.log ( 'de');
Nå hvis vi kjører dette skriptet, blir debuggeren kalt på vårt brytepunkt, og vi kan kontrollere manuskriptkontrollen ved å bruke forts
eller neste
kommandoer (c
eller n
for kort).
Vi kan stoppe scriptutførelsen når som helst ved å bruke 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; feilsøking> forts < de break in /home/tom/web/envatodebug/myscript.js:3 1 foo = 5; 2 setTimeout(() => 3 debugger; 4 console.log ('bugger'); 5, 1000); feilsøking> neste pause i /home/tom/web/envatodebug/myscript.js:4 2 setTimeout (() => 3 debugger; 4 console.log ('bugger'); 5, 1000); 6 console.log ('de'); feilsøking> neste < bugger break in /home/tom/web/envatodebug/myscript.js:5 3 debugger; 4 console.log('bugger'); 5 , 1000); 6 console.log('de'); 7 debug> slutte
$ node debug script.js < debugger listening on port 5858 connecting… ok debug> replik Trykk Ctrl + C for å forlate debug repl> foo 2> 2 + 2 4
Med Read-Eval-Print-Loop av debugger kan du angi kode interaktivt under utførelse og dermed få tilgang til tilstanden til applikasjonen og alle dens variabler og metoder når det gjelder å bryte utføringen. Dette er et veldig kraftig verktøy som du kan bruke til å rense din app raskt.
Generelt er REPL tilgjengelig som en frittstående og som en del av debuggeren, og det lar deg kjøre JavaScript interaktivt. For eksempel bare skriv inn node
ved spørringen uten valgmuligheter, og du vil få et REPL-grensesnitt som du kan skrive inn kode og se utgangen.
Tidligere nevnte jeg forts
og neste
(c
og n
) kommandoer, som tillater oss å fortsette kodeutførelsen når et brytepunkt er nådd. I tillegg til dette, når vi går gjennom koden, kan vi også gå inn i en metode eller gå ut til det overordnede omfanget.
Bruk kommandoene skritt
å gå inn og ute
å gå ut, eller s
og o
for kort.
Bruk tilbakesporing
eller bt
for å få en utgang fra backtrace for gjeldende kjøringsramme.
Bruk omstart
eller r
å starte scriptet fra begynnelsen av utførelsen.
Avanserte brukere kan få tilgang til feilsøkeren også ved å starte Node.js med --debug
kommandolinjeflagg, eller alternativt ved å signalere en eksisterende Node.js-prosess med SIGUSR1
.
Når en prosess er satt inn i feilsøkingsmodusen på denne måten, kan den da kobles til ved å bruke debuggeren Node.js ved å enten bruke pid
av løpeprosessen eller via en URI-referanse (f.eks localhost: port
) for å koble lyttefeilprogrammet:
node debug -p
kobles til prosessen via pid
.node debug
kobler seg til prosessen via URI som localhost: 5858
.I tillegg til CLI-feilsøkingsverktøyet, gir Node Inspector også en GUI-inspektør inne i nettleseren (for øyeblikket bare støtte Chrome og Opera).
For å bruke feilsøkingsprogrammet, installer du som:
npm installer-g node-inspektør
Nå som vi har installert Node inspektøren, kan vi feilsøke vår script.js med:
node-debug script.js
Skallet ditt vil nå sende ut følgende, og åpner sannsynligvis nettleseren til nettadressen hvis du har Chrome eller Opera satt som standard på utviklings OS.
Node Inspector er nå tilgjengelig fra http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 Feilsøking 'script.js' Debugger lytter på port 5858
I nettleseren din vil du nå kunne feilsøke søknaden din i et lignende miljø til utviklerverktøyspakken. Innstilling av brytepunkter og visningskode er nå integrert med nettleservisningen. Nyt!
Feilsøking trenger ikke å være et mareritt, og det må heller ikke være stressende.
Angi breakpoints og stepping gjennom kode er så enkelt i Node. Det er en veldig lignende opplevelse for Ruby, og hvis du prøver å forstå et program du har fått, åpner du appen i feilsøkingsmodus og pauser kjøring, er en fantastisk måte å lære i en rask tidsramme..