Fouten opsporen met het ingebouwde foutopsporingsprogramma van Node.js

Voltooid

Foutopsporing is een toepassing met meerdere fases die meestal de volgende stappen volgt:

  1. Identificeer een fout in uw programma.
  2. Zoek de locatie van de fout in uw code.
  3. Analyseer waarom de fout zich voordoet.
  4. Los de fout op.
  5. Valideer of uw oplossing werkt.

Nadat u een fout in uw Node.js-programma hebt geïdentificeerd, moet u eerst de locatie van uw fout in uw code opsporen. Om dat te bereiken, is een van de meest efficiënte manieren om uw code stap voor stap uit te voeren om een idee te krijgen van waar dingen fout gaan.

Onderbrekingspunten

Het kan enorm inefficiënt zijn als u uw volledige code stap voor stap moet doorlopen, als uw programma duizenden regels code bevat. In dat geval kunt u een onderbrekingspunt gebruiken. Hierdoor kunt u de normale uitvoering van uw programma onderbreken en op een specifiek punt in uw code pauzeren.

Door onderbrekingspunten te gebruiken, kunt u uw programma normaal uitvoeren, totdat u het kritieke deel van de code bereikt waar u vermoedt dat de fout zich bevindt. Vervolgens kunt u stap voor stap overschakelen naar het uitvoeren.

U kunt onderbrekingspunten op meerdere manieren in uw code definiëren, gebaseerd op uw foutopsporingsprogramma en code-editor.

De inspectiemodus van Node.js

Omdat een foutopsporingsprogramma volledige toegang heeft tot de uitvoeringsomgeving, kan een kwaadwillende actor deze ook gebruiken om willekeurige code in uw Node.js-toepassing te injecteren. Daarom kunt u in Node.js standaard geen fouten opsporen in een actief programma. U moet een speciale modus, genaamd Inspector-modus, inschakelen om foutopsporing toe te staan.

U moet uw toepassing starten met de --inspect optie om een foutopsporingsprogrammaclienttoe te staan zichzelf aan de toepassing te koppelen en controle te houden over de uitvoering van uw toepassing.

Wanneer Node.js is gestart met de optie, luistert het standaard op de --inspect host 127.0.0.1 op de poort 9229. U kunt ook een aangepaste host en poort opgeven met behulp van de syntaxis --inspect=<HOST>:<PORT>.

Belangrijk

Voorkom dat de Node.js-probleemoplossingspoort wordt gebonden aan een openbaar IP-adres of aan 0.0.0.0. Anders kunnen clients die verbinding kunnen maken met uw IP-adres mogelijk verbinding maken en uw Node.js-toepassing beheren. Op die manier kan een aanvaller op afstand willekeurige code uitvoeren op uw uitvoeringsomgeving. Deze actie kan leiden tot een ernstige schending van de beveiliging.

Als alternatief kunt u de optie --inspect-brk gebruiken. Het werkt op dezelfde manier als --inspect, maar de code wordt net vóór het begin van uw code niet meer uitgevoerd. Hiermee kunt u het foutopsporingsprogramma koppelen en uw tijd nemen om onderbrekingspunten in te stellen en uw code te doorlopen om de hoofdoorzaak van het probleem te identificeren. Gebruik deze --inspect-brk schakeloptie wanneer u fouten wilt opsporen:

  • Een racevoorwaarde.
  • Onregelmatig probleem dat moeilijk te reproduceren is.

Nadat uw toepassing is gestart met de inspectiemodus ingeschakeld, kunt u alle compatibele clients voor foutopsporing gebruiken om verbinding te maken met uw toepassingsproces.

Foutopsporingsprogramma-clients

Als u fouten in uw toepassing wilt opsporen, moet u een foutopsporingsprogrammaclient gebruiken. Een foutopsporingsprogrammaclient is een programma dat verbinding maakt met uw Node.js-toepassing en waarmee u de uitvoering ervan kunt beheren. Er zijn veel foutopsporingsprogrammaclients beschikbaar, maar de meest voorkomende clients zijn:

  • Visual Studio Code: een grafische foutopsporingsprogrammaclient die wordt geleverd met Visual Studio Code. Gebruik deze optie bij foutopsporing tijdens de ontwikkeling.
  • node-inspect: een opdrachtregeldebugger-client die wordt geleverd met Node.js. Gebruik dit bij foutopsporing in productie.

Ingebouwd foutopsporingsprogramma

U kunt node-inspect, opdrachtregeldebugger-client, die wordt geleverd met Node.js, gebruiken om fouten in uw Node.js-toepassing op te sporen. Het is een eenvoudig foutopsporingsprogramma waarmee u onderbrekingspunten kunt instellen en uw code stapsgewijs kunt uitvoeren.

node inspect <YOUR_SCRIPT>.js

Het foutopsporingsprogramma voor knooppunten inspecteert Node.js met de controlemodus ingeschakeld en wordt op hetzelfde moment gestart als het geïntegreerde interactieve foutopsporingsprogramma. De uitvoering wordt onderbroken net voordat de code wordt gestart. U ziet nu de prompt voor het foutopsporingsprogramma dat aangeeft dat deze is gestart.

node inspect myscript.js
< Debugger listening on ws://127.0.0.1:9229/ce3689fa-4433-41ee-9d5d-98b5bc5dfa27
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in myscript.js:1
> 1 const express = require('express');
  2
  3 const app = express();
debug>