Mit stillen Fehlern meine ich hier, dass jedes Problem keine sichtbaren Anzeichen hervorruft.
Einige häufigste Beispiele:
Lassen Sie uns jedes einzelne im Detail verstehen und wie man es debuggt:
Diese Fehler treten auf, wenn Sie den .catch()-Handler nicht an Ihr Versprechen anhängen. Wenn das Versprechen abgelehnt wird, wird daher kein Fehler angezeigt.
Sie können diesen Fehler beheben, indem Sie Ihren Code mit dem Argument „unhandled-rejections“ ausführen. Es zwingt den Knoten, den Prozess bei nicht behandelten Versprechensablehnungen zu beenden, wodurch der Fehler explizit gemacht wird.
node --unhandled-rejections=strict script.js
Sind Sie auf einen Node.js-Code gestoßen, der:
Wenn ja, liegt die Ursache höchstwahrscheinlich an einem ungelösten Versprechen oder irgendwo in einer Endlosschleife.
Sie können das Problem überprüfen, indem Sie die Ausführungszeit des Skripts wie unten beschrieben begrenzen:
timeout 10s node script.js || echo "Warning: Unresolved promise or infinite loop detected"
Shared State Race Conditions treten auf, wenn mehrere Rückrufe gleichzeitig auf den Shared State zugreifen.
Aufgrund der Rennbedingung führt das Programm zu unvorhersehbaren Ergebnissen, die zu Dateninkonsistenzen ohne sichtbare Symptome während des Tests führen.
Aber glücklicherweise bietet Node tatsächlich eine Trace-Async-Hooks-Option, um solche Ausführungsmuster zu identifizieren.
node --trace-async-hooks script.js 2>&1 | grep "asyncId"
Lassen Sie uns abschließend über Fehler in Ereignis-Listenern sprechen.
Diese werden durch nicht behandelte Versprechenablehnungen innerhalb des Event-Listener-Callbacks verursacht. Dies führt dazu, dass der Fehler nie an den Hauptausführungskontext weitergegeben wird.
Sie können diese Fehler identifizieren, indem Sie alle Knotenereignisprotokolle an einen Grep-Filter umleiten, um Fehler zu erfassen, die während der Ereignisbehandlung ausgegeben werden
node -r events script.js 2>&1 | grep "Error"
Und das ist es.
Ich hoffe, dass Sie diese Befehle beim Debuggen stiller Fehler im JavaScript-Code nützlich finden.
Kommentieren Sie außerdem unten, welcher stille Fehler Sie am meisten nervt?
Das obige ist der detaillierte Inhalt vonBefehle zum Debuggen von „stillen Fehlern' in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!