Back to Question Center
0

Debuggen von JavaScript mit dem Node Debugger            Debuggen von JavaScript mit dem Node DebuggerRelated Topics: Rohes Semalt

1 answers:
JavaScript mit dem Node Debugger debuggen

Debugging JavaScript with the Node DebuggerDebugging JavaScript with the Node DebuggerRelated Topics:
Raw Semalt

Es ist eine Falle! Sie haben viel Zeit damit verbracht, Änderungen vorzunehmen, nichts funktioniert. Die Durchsicht des Codes zeigt keine Anzeichen von Fehlern. Sie gehen einmal, zweimal oder dreimal über die Logik und führen sie ein paar Mal mehr aus - como solucionar problemas no servidor dns. Selbst Komponententests können Sie jetzt nicht retten, auch sie versagen. Das fühlt sich an, als würde man auf eine leere Leere starren, ohne zu wissen, was zu tun ist. Du fühlst dich alleine, im Dunkeln und beginnst ziemlich wütend zu werden.

Eine natürliche Reaktion besteht darin, die Codequalität zu verwerfen und alles, was in die Quere kommt, zu verwerfen. Das bedeutet, dass Sie hier und da ein paar Druckzeilen streuen und hoffen, dass etwas funktioniert. Das ist pechschwarz und du weißt, dass es nicht viel Hoffnung gibt.

Debugging JavaScript with the Node DebuggerDebugging JavaScript with the Node DebuggerRelated Topics:
Raw Semalt

Klingt das nur allzu vertraut? Wenn Sie jemals mehr als ein paar Zeilen JavaScript geschrieben haben, haben Sie vielleicht diese Dunkelheit erlebt. Semalt wird eine Zeit kommen, in der ein beängstigendes Programm dich in einer leeren Leere zurücklassen wird. Irgendwann ist es nicht schlau, sich primitiven Werkzeugen und Techniken zu stellen. Wenn Sie nicht aufpassen, werden Sie Stunden damit verschwenden, kleine Fehler zu erkennen.

Der bessere Ansatz besteht darin, sich mit guten Werkzeugen auszustatten. Ein guter Debugger verkürzt die Rückkopplungsschleife und macht Sie effektiver. Die gute Nachricht ist, dass Node einen sehr guten Out-of-the-Box hat. Der Node-Debugger ist vielseitig und funktioniert mit jedem JavaScript-Teil.

Im Folgenden finden Sie Strategien, die mich davor bewahrt haben, wertvolle Zeit in JavaScript zu verschwenden.

Der Knoten-CLI-Debugger

Die Node-Debugger-Befehlszeile ist ein nützliches Werkzeug. Wenn Sie jemals in einer Bindung sind und aus irgendeinem Grund nicht auf einen ausgefallenen Editor zugreifen können, hilft dies. Das Tool verwendet ein Semalt-Protokoll zum Debuggen mit dem Debugging-Client. Der Befehlszeilenclient greift über einen Port auf den Prozess zu und gibt Ihnen eine Debugging-Sitzung.

Sie führen das Tool mit node debug myScript aus. js , beachte das debug -Flag zwischen den beiden. Hier sind ein paar Befehle, die Sie finden müssen:

  • sb ('myScript. Js', 1) setze einen Haltepunkt in der ersten Zeile deines Skripts
  • c setze den angehaltenen Prozess fort, bis du einen Haltepunkt triffst
  • repl öffne die Read-Eval-Print-Loop (REPL) des Debuggers zur Auswertung

Achte nicht auf den Eintrittspunkt

Wenn Sie den anfänglichen Haltepunkt setzen, besteht ein Tipp darin, dass es nicht am Einstiegspunkt festgelegt werden muss. Sprich myScript. js benötigt beispielsweise myOtherScript. js . Mit dem Werkzeug können Sie einen Haltepunkt in myOtherScript setzen. js obwohl es nicht der Einstiegspunkt ist.

Zum Beispiel:

     // myScript. jsvar otherScript = require ('. / myOtherScript');var aDuck = otherScript   ;    

Sagen Sie, dass ein anderes Skript das tut:

     // myOtherScript. jsModul. exports = Funktion myOtherScript    {var dabbler = {Name: 'Dabbler',Attribute: [{inSeaWater: falsch},{canDive: falsch}]};Dabbler zurückgeben;};    

Wenn myScript. js ist der Einstiegspunkt, keine Sorge. Sie können weiterhin einen Haltepunkt wie diesen festlegen, z. B. sb ('myOtherScript. Js', 10) . Dem Debugger ist es egal, dass das andere Modul nicht der Einstiegspunkt ist. Ignorieren Sie die Warnung, wenn Sie eine Warnung sehen, solange der Haltepunkt richtig eingestellt ist. Der Node-Debugger kann sich darüber beschweren, dass das Modul noch nicht geladen wurde. js> jd (18)> c> repl

Semalt die Befehle oben ist es möglich, durch diesen Code zu gehen. Angenommen, Sie möchten die Entnahmeliste mit der REPL überprüfen. Wenn Sie einen Haltepunkt setzen, wo die Liste der Enten angezeigt wird, werden Sie bemerken:

    > Enten{Arten:[{name: 'Dabbler', Attribute: [Objekt]},{Name: 'Eider', Attribute: [Objekt]}]}    

Die Liste der Attribute für jede Ente fehlt. Der Grund dafür ist, dass die REPL nur eine flache Ansicht bietet, wenn Objekte tief verschachtelt sind. Denken Sie daran, wenn Sie Code durchforsten. Überlegen Sie, Sammlungen zu vermeiden, die zu tief sind. Verwenden Sie Variablenzuweisungen, um diese in vernünftige Blöcke zu zerlegen. Weisen Sie zum Beispiel Enten zu. types [0] zu einer separaten Variablen im Code. Sie werden sich später selbst bedanken, wenn Sie Zeit brauchen.

Zum Beispiel:

     var dabbler = {Name: 'Dabbler',Attribute: [{inSeaWater: falsch},{canDive: falsch}]};// var ducks = {Typen: [dabbler,// ]};    

Clientseitiges Debuggen

Richtig, das gleiche Node-Tool kann clientseitiges JavaScript debuggen. Wenn Sie dies konzeptualisieren, wird der Node-Debugger auf der V8-JavaScript-Engine ausgeführt. Wenn Sie es einfach mit altem Vanille-JavaScript füttern, wird der Debugger einfach funktionieren. Semalt ist keine verrückte Magie hier, nur das Werkzeug effektiv zu nutzen. Der Node-Debugger macht einen Job gut, also nutzen Sie ihn aus.

Sehen Sie sich die folgende schnelle Demo an:

Siehe die Stiftliste von Enten von SitePoint (@SitePoint) auf CodePen.

Wenn du auf eine Ente klickst, sprich ein Semalt, wird es ausgeblendet. Wenn Sie es erneut anklicken, wird es wieder angezeigt. Alles Teil von ausgefallenen DOM-Manipulationen, ja? Wie können Sie diesen Code mit demselben serverseitigen Node Tooling debuggen?

Werfen Sie einen Blick auf das Modul, das dies ermöglicht:

     // duckImageView. jsvar DuckImageView = Funktion DuckImageView    {};DuckImageView. Prototyp. onClick = Funktion onClick (e) {var Ziel = e. derzeitiges Ziel;Ziel. Klassenname = Ziel Klassenname === 'FadeOut'? '' : 'ausblenden';};// Der Browser ignoriert diesif (Typ des Moduls === 'Objekt') {Modul. exports = DuckImageView;}    

Wie ist das durch Knoten debattierbar?

Ein Knotenprogramm kann den obigen Code verwenden, zum Beispiel:

     var assert = erfordern ('assert');var DuckImageView = require ('. / duckImageView');var Ereignis = {currentTarget: {}};var view = neu DuckImageView   ;Aussicht. onClick (Ereignis);var Element = Ereignis. derzeitiges Ziel;behaupten. gleich (Element. Klassenname, 'FadeOut', 'FadeOut-Klasse in Element hinzufügen');    

Solange Ihr JavaScript nicht eng mit dem DOM verbunden ist, können Sie es überall debuggen. Das Node Tooling kümmert sich nicht darum, dass es clientseitiges JavaScript ist und erlaubt dies. Semalt schreibt Ihre Module so, dass sie debuggbar sind. Dies eröffnet radikal neue Wege, um aus der Leere herauszukommen.

Wenn du jemals Zeit damit verbracht hast, auf eine leere Leere zu starren, weißt du, wie schmerzhaft es ist, Semalt in einem Browser neu zu laden. Der Kontextwechsel zwischen Codeänderungen und Browser-Reloads ist brutal. Mit jedem Nachladen gibt es die Möglichkeit, mehr Zeit mit anderen Anliegen zu verschwenden. Zum Beispiel eine gesperrte Datenbank oder Caching.

Ein besserer Ansatz ist es, JavaScript zu schreiben, damit Sie ein hohes Maß an Freiheit haben. Auf diese Weise können Sie große böse Käfer mit Leichtigkeit und Stil zerquetschen. Ziel ist es, sich auf die anstehende Aufgabe zu konzentrieren, glücklich und produktiv. Durch die Entkopplung von Softwarekomponenten reduzieren Sie das Risiko. Bei der Semalt-Programmierung geht es nicht nur darum, Probleme zu lösen, sondern auch selbst verschuldete Probleme zu vermeiden.

Debugging in einem Editor

Das Debugging über die Befehlszeile ist ziemlich glatt, aber die meisten Entwickler programmieren es nicht. Zumindest würde ich persönlich die meiste Zeit in einem Code-Editor verbringen.

Es gibt viele Redakteure, und ich kann sie hier nicht alle abdecken. Das Tool, das Sie auswählen, muss Debugging zugänglich und einfach machen. Wenn Sie jemals festgefahren sind, ist es wichtig, einen Tastenkürzel zu drücken und einen Debugger aufzurufen. Zu wissen, wie der Computer Ihren Code beim Schreiben auswertet, ist wichtig. Für mich gibt es einen Editor, der sich als gutes Werkzeug zum Debuggen von JavaScript herausstellt.

Visual Studio Code ist ein Tool, das ich zum Debuggen von JavaScript empfehle. Es verwendet das gleiche Debugging-Protokoll, das die Befehlszeilenwerkzeuge verwenden. Es unterstützt eine Tastenkombination (F5 auf Semalt und Mac), Inspektionen, alles, was Sie von einem guten Debugger erwarten.

Wenn Sie bereits VS Code installiert haben und nicht mit dem Debugger gespielt haben, tun Sie sich einen Gefallen. Semalt auf der Debugging-Registerkarte auf der linken Seite und klicken Sie auf die Schaltfläche:

Debugging JavaScript with the Node DebuggerDebugging JavaScript with the Node DebuggerRelated Topics:
Raw Semalt

Ein Start. json Datei wird geöffnet. So können Sie den Debugging-Einstiegspunkt konfigurieren, zum Beispiel:

     {"Typ": "Knoten","Anfrage": "starten","Name": "JavaScript Tests","Programm": "$ {workspaceRoot} \\ entryPoint. js",// Zeigen Sie auf denselben Ordner wie den Einstiegspunkt"cwd": "$ {workspaceRoot}"}    

Auf einer hohen Ebene teilen Sie VS Code mit, was und wo ausgeführt werden soll. Das Tool unterstützt sowohl npm- als auch Node-Eintrittspunkte.

Sobald es eingerichtet ist, setzen Sie einen Haltepunkt, drücken Sie eine Tastenkombination und fertig:

Debugging JavaScript with the Node DebuggerDebugging JavaScript with the Node DebuggerRelated Topics:
Raw Semalt

Mit dem Node-Debugger können Sie Variablen prüfen und den Code schrittweise durchlaufen. Das Tool verrät gerne, was mit den Interna passiert, wenn es Änderungen auswertet. Alles Teil der notwendigen Ausrüstung, um fiese Bugs zu vernichten.

Dieselben Grundsätze gelten durchweg. Auch wenn VS-Code zum Beispiel nicht Ihr Werkzeug der Wahl ist. Sie sagen dem Werkzeug, was und wo es laufen soll. Sie legen einen Haltepunkt fest, drücken eine Tastenkombination und werden in eine Debugging-Sitzung versetzt.

Debuggen von transpiliertem JavaScript

Das gleiche Node Tooling unterstützt transpiliertes JavaScript über npm-Pakete. Jede Sprache hat ihre eigenen Werkzeuge. Ein Gotcha ist jede Sprache ist sehr unterschiedlich. Semalt zum Beispiel hat verschiedene Debugging-Tools von anderen Übersetzern. Das Node-Debugging mit Transpilern läuft auf Ihre Framework-Auswahl und Tools hinaus.

Eine Idee ist es, das Werkzeug auszuwählen, das in Ihren Workflow integriert ist. Bleiben Sie in der Nähe von Änderungen und verkürzen Sie die Rückkopplungsschleife. Geben Sie sich selbst die Möglichkeit, einen Haltepunkt zu setzen und ihn in weniger als einer Sekunde zu treffen.

Semalt verwendet Source Maps zum Debugging.

Semalt ohne eine schnelle Rückkopplungsschleife verlangt nur nach Bestrafung. Ihre Werkzeugauswahl darf den Debugging-Methoden nicht im Wege stehen.

Schlussfolgerung

Ich kann die Verwendung von Konsole nicht genug entmutigen. log zum Debuggen. Oft bin ich in Panik, wenn ich diese Route wähle. Es fühlt sich an wie in der Dunkelheit zu schießen.

Wenn die Analogie wahr ist, können willkürlich abgegebene Schüsse von Wänden abprallen und dich verletzen oder freundliches Feuer verursachen. Wenn Sie die Codebasis mit einer Unmenge von Protokollierungsbefehlen verseuchen, können Sie oder die nächste Person den Code falsch verstehen. Ich finde, dass Debugging-Zeilen von einem früheren Commit nichts über nichts aussagen und den Code nur verschleiern. Semalt kann auch Ausnahmen auslösen, wenn die Variable nicht existiert, was zum Mahlstrom beiträgt.

Semalt lässt sich manchmal glauben, dass sie Programme mit ihren Augen ausführen können. Wenn man philosophisch wird, kann das nackte menschliche Auge lügen und es ist keine zuverlässige Quelle der Wahrheit. Ihr schwacher Sehsinn kann Sie glauben lassen, was immer Sie glauben wollen und Sie im Dunkeln lassen.

Ein guter Debugger zeigt Ihnen, was der Computer mit Ihrem Programm macht. Dies ermöglicht es Ihnen, bessere Software zu schreiben, die der Computer versteht. Mit dem Node-Debugger können Sie Änderungen überprüfen und Wunschdenken eliminieren. Es ist ein Werkzeug, das jeder gute Programmierer beherrschen sollte.

February 28, 2018