Depanarea cu Node.js

Consider că depanarea este o parte crucială a ciclului de dezvoltare ca oricare alta. De aceea este întotdeauna o bună practică demistificarea misiunii de depanare, făcând-o mai ușoară și mai puțin consumatoare de timp, astfel încât să putem termina munca la timp și să reducem stresul. 

La fel ca majoritatea limbilor aflate acolo, nodul oferă câteva instrumente excelente de depanare care fac defectele de cod ușor de găsit și fixate. Întotdeauna susțin utilizarea unui program de depanare, deoarece personal găsesc folosind debuggers elimină cu adevărat nevoia de presupuneri și ne face mai buni dezvoltatori în general. 

Acest ghid este destinat dezvoltatorilor și administratorilor care lucrează deja cu Nodul. Aceasta presupune o înțelegere fundamentală a limbajului la un nivel practic.

Folosind instrumentul de depanare

Node.js include un utilitar complet de depanare în afara proceselor, accesibil printr-un protocol bazat pe TCP simplu și client încorporat de depanare.

De exemplu, pentru a utiliza depanatorul pentru a depana un fișier numit script.js, puteți pur și simplu să apelați nodul folosind depanare pavilion ca atare:

$ node depanare script.js < debugger listening on port 5858 connecting… ok debug>

Puncte critice

Acum, că ați început o sesiune de depanare, oriunde în scriptul pe care îl apelați debugger din va fi un breakpoint pentru depanator. 

De exemplu, să adăugăm o declarație de depanare la script.js:

foo = 2; setTimeout (() => debugger; console.log ("bugger");, 1000); console.log ( 'de');

Acum, dacă executăm acest script, debuggerul va fi apelat la punctul nostru de întrerupere și putem controla controlul scriptului folosind cont sau Următor → comenzi (c sau n pe scurt).

Putem întrerupe execuția scenariului în orice moment folosind p.

$ node depanare script.js < debugger listening on port 5858 connecting… ok break in /home/tom/web/envatodebug/myscript.js:1 1 foo = 5; 2 setTimeout(() => Debuggerul 3; depanare> cont < de break in /home/tom/web/envatodebug/myscript.js:3 1 foo = 5; 2 setTimeout(() => Debuggerul 3; 4 console.log ("bugger"); 5, 1000); debug> următoarea pauză în /home/tom/web/envatodebug/myscript.js:4 2 setTimeout (() => 3 debugger; 4 console.log ("bugger"); 5, 1000); 6 console.log ('de'); depanare> următor < bugger break in /home/tom/web/envatodebug/myscript.js:5 3 debugger; 4 console.log('bugger'); 5 , 1000); 6 console.log('de'); 7 debug> părăsi

REPL

$ node depanare script.js < debugger listening on port 5858 connecting… ok debug> repl Apăsați Ctrl + C pentru a lăsa replicarea replicării> foo 2> 2 + 2 4

Culegerea Read-Eval-Print-Loop a debuggerului vă permite să introduceți codul în mod interactiv în timpul execuției și, astfel, să accesați starea aplicației și toate variabilele și metodele acesteia la punctul de rupere a executării. Acesta este un instrument foarte puternic pe care îl puteți utiliza pentru a vă dezinstala rapid aplicația.

În general, REPL este disponibil ca independent și ca parte a programului de depanare și vă permite să rulați JavaScript în mod interactiv. De exemplu, tastați doar nodul la prompt fără opțiuni, și vi se va da o interfață REPL pe care o puteți scrie cod și să vedeți ieșirea.

Începeți și urmați

Anterior am menționat cont și Următor → (c și n), care ne permit să continuăm execuția codului odată ce a fost atins un punct de întrerupere. În afară de aceasta, pe măsură ce mergem prin cod, putem de asemenea să introducem o metodă sau să trecem la domeniul său de aplicare.

Utilizați comenzile Etapa pentru a intra în și afară pentru a ieși, sau s și o pe scurt.

backtracking

Utilizare backtrace sau bt pentru a obține o ieșire a backtrace pentru cadrul de execuție curent.

Repornirea

Utilizare repornire sau r pentru a reporni scriptul de la începutul executării.

Moduri alternative de conectare la instrumentul de depanare

Utilizatorii avansați pot accesa și depanatorul prin pornirea Node.js cu --depanare linia de comandă, sau alternativ prin semnalizarea unui proces Node.js existent cu SIGUSR1.

Odată ce un proces a fost setat în modul de depanare în acest fel, acesta poate fi apoi conectat prin utilizarea programului de depanare Node.js fie utilizând pid a procesului de rulare sau printr-o referință URI (de ex localhost: Port) pentru a conecta depanatorul de ascultare:

  • nod de depanare -p  se conectează la proces prin pid.
  • nod de depanare  se conectează la proces prin URI, cum ar fi localhost: 5858.

Folosind inspectorul de noduri

În plus față de instrumentul de depanare CLI, Node Inspector oferă, de asemenea, un inspector GUI în interiorul browserului web (care în prezent acceptă numai Chrome și Opera).

Pentru a utiliza depanatorul, instalați pur și simplu așa:

npm instalează -g node-inspector

Acum, când avem instalat inspectorul Node, putem depana script.js cu:

node-debug script.js

Coaja dvs. va scoate acum următorul lucru și, probabil, deschideți browserul web la adresa URL dacă aveți setat Chrome sau Opera ca implicit în sistemul dvs. de dezvoltare.

Node Inspector este acum disponibil de la http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 Debugging 'script.js' Debugger ascultare pe portul 5858

În browserul dvs. web, veți putea acum să depanați aplicația într-un mediu similar cu pachetul de instrumente pentru dezvoltatori. Setarea punctelor de oprire și a codului de vizualizare este acum integrată în vizualizarea browserului dvs. se bucura!

Concluzie

Debugarea nu trebuie să fie un coșmar și nici nu trebuie să fie stresantă. 

Setarea punctelor de întrerupere și trecerea prin cod este atât de simplă în Nod. Este o experiență foarte asemănătoare cu Ruby și dacă încercați să înțelegeți o aplicație care vi-a fost dată, deschiderea aplicației în modul de depanare și întreruperea execuției este o modalitate fantastică de a învăța într-un interval de timp rapid. 

Cod