Feilsøking med Node.js

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å.

Bruke Debugger

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>

Brytningspunkter

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

ERSTATTER

$ 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.

Stepping In & Stepping Out

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.

Backtracing

Bruk tilbakesporing eller bt for å få en utgang fra backtrace for gjeldende kjøringsramme.

omstart

Bruk omstart eller r å starte scriptet fra begynnelsen av utførelsen.

Alternative måter å koble til Debugger

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.

Bruke Node Inspector

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!

Konklusjon

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..