Entwickler müssen bei der Entwicklung von Anwendungen häufig auf die Debugging-Funktion der Programmiersprache zurückgreifen, um die Entwicklung zu vereinfachen und Fehler zu beheben. Im Allgemeinen müssen wir die Debugging-Funktion einer leistungsstarken IDE verwenden, um diese Arbeit abzuschließen. nodejs ist keine Ausnahme.
Heute werden wir ausführlich vorstellen, wie man NodeJS-Programme debuggt.
Erinnern Sie sich noch an das Koa-Programm, über das wir zuvor gesprochen haben? In diesem Artikel wird ein einfaches Koa-Serverprogramm als Beispiel verwendet, um mit dem Debuggen von NodeJS zu beginnen.
Werfen wir zunächst einen Blick auf einen einfachen Koa-Dienst app.js:
const Koa = require('koa'); const app = module.exports = new Koa(); app.use(async function(ctx) { ctx.body = 'Hello World'; }); if (!module.parent) app.listen(3000);
Das obige Programm öffnet Port 3000 und richtet einen http-Dienst ein. Bei jeder Anfrage wird „hello World“ zurückgegeben, was sehr einfach ist.
Um das obige Programm auszuführen, müssen wir node app.js ausführen. Dadurch wird app.js ausgeführt, das Debuggen wird jedoch nicht aktiviert. [Empfohlenes Lernen: „nodejs-Tutorial“]
Wie debugge ich?
Wir müssen den Parameter --inspect hinzufügen:
node --inspect app.js
Der obige Code aktiviert die Debugging-Funktion von nodejs.
Werfen wir einen Blick auf die Ausgabe:
Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a For help, see: https://nodejs.org/en/docs/inspector
Die Ergebnisse sagen uns zwei Dinge. Das erste ist der Port, den der Debugger abhört. Standardmäßig wird Port 9229 von 127.0.0.1 geöffnet. Und zur Unterscheidung eine eindeutige UUID zugewiesen.
Das zweite ist, uns mitzuteilen, dass der von nodejs verwendete Debugger Inspector ist.
Inspector wurde nach NodeJS 8 eingeführt. Wenn es vor NodeJS 7 ist, wird der Legacy-Debugger verwendet.
Wenn der Debugger mit der NodeJS-Laufumgebung verbunden ist und ein böswilliger Angreifer vorhanden ist, kann der böswillige Angreifer beliebigen Code in der NodeJS-Umgebung ausführen. Dies birgt große Sicherheitsrisiken für unser Programm.
Wir müssen also auf die Sicherheit des Debuggens achten. Im Allgemeinen empfehlen wir kein Remote-Debugging.
Standardmäßig ist --inspect an 127.0.0.1 gebunden, was nur lokalen Programmen den Zugriff ermöglicht. Und jedes lokal laufende Programm hat die Berechtigung, das Programm zu debuggen.
Wenn wir das Debug-Programm wirklich externen Programmen zugänglich machen möchten, können wir die externe IP-Adresse des Computers oder 0.0.0.0 (d. h. eine beliebige Adresse, keine Einschränkungen) angeben, damit der Remote-Computer Remote-Debugging durchführen kann.
Was sollten wir tun, wenn wir ein sicheres Remote-Debugging durchführen möchten?
Zuerst müssen wir das lokale Debugging aktivieren:
node --inspect app.js
Dann können wir einen SSH-Tunnel erstellen, um den lokalen 9221-Port dem 9229-Port des Remote-Servers zuzuordnen:
ssh -L 9221:localhost:9229 user@remote.example.com
Auf diese Weise können wir uns mit dem lokalen 9221 verbinden Port. Remote-Debugging.
Die Verwendung von WebStorm zum Debuggen ähnelt der Verwendung von IDEA zum Debuggen von Java-Programmen, daher werde ich hier nicht auf Details eingehen.
Verwenden Sie Chrome devTools zum Debuggen
Geben Sie chrome://inspect in Chrome ein:
Wir können die Chrome-Inspect-Schnittstelle sehen. Wenn Sie bereits ein NodeJS-Programm mit lokal aktiviertem Inspect haben, können Sie es direkt in Remote Target sehen.
Wählen Sie das Ziel aus, das Sie debuggen möchten, und klicken Sie auf „Inspizieren“, um das Chrome devTools-Debugging-Tool zu öffnen:
Sie können das Programm profilieren und debuggen.
Hier konzentrieren wir uns auf das Debuggen. Gehen Sie also zur Quellspalte und fügen Sie den Quellcode des Programms hinzu, das Sie debuggen möchten:
Fügen Sie Haltepunkte hinzu, um mit dem Debuggen zu beginnen. Es ist dasselbe wie das Debuggen von js auf der Webseite in Chrome.
Verwenden Sie Node-Inspect zum Debuggen
Wir verwenden direkt:
node inspect app.js < Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in app.js:1 > 1 const Koa = require('koa'); 2 const app = module.exports = new Koa(); 3 debug>
node inspect, um zwei Dinge zu tun. Das erste ist, eine Unterroutine zum Ausführen von node --inspect app.js zu generieren, und das zweite ist, das CLI-Debugging-Fenster im Hauptprogramm auszuführen.
Dieser CLI-Debugger stellt uns einige sehr nützliche Befehle zur Verfügung:
Für mehr Programmierung- Verwandte Kenntnisse finden Sie unter:
Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über das Debuggen von NodeJS-Programmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!