2016-10-28 2 views
5

Die meisten APIs in Knotenbibliotheken sind asynchron von Entwurf. Wenn eine Ausnahme in einem Callback ausgelöst wird, zeigt der Stacktrace nur den Aufruf-Stack, der bei process._tickCallback beginnt.NodeJS: Ist es möglich, den Stack-Trace einer aufrufenden asynchronen Funktion anzuzeigen?

Ich frage mich, ob es einen Trick gibt, um auch den Stack-Trace der Funktion zu zeigen, die den _tickCallback trigered.

+0

[Hier ist eine Methode, die Sie verwenden können (Link zu ein Gihub Gist).] (https://gist.github.com/lll000111/3d6a53da4d53beb909189793c7631ba6) Nachteile: Ein paar zusätzliche Zeilen Code - Sie müssen alle async umhüllen. Funktionsaufrufe mit 'try/catch' (Sie können auch' promise.catch (...) 'verwenden). Dann erstellen Sie ein neues 'Error'-Objekt und fügen seine' stack'-Eigenschaft dem vorhandenen Stapel hinzu. Wenn für ALL async getan. Funktionsaufrufe enden mit einem vollständigen Stack-Trace. Der Geschwindigkeitsnachteil (Stack-Trace-Erstellung ist teuer) sollte für Async keine Rolle spielen. Funktionen (bitte verwenden Sie keine Ausnahmen für den normalen Kontrollfluss). –

Antwort

0

Sie können lange Stacktraces betrachten, um zu sehen, ob es Ihren Bedürfnissen entspricht. Das Modul heißt Stackups. Alles, was Sie tun, ist es zu installieren:

npm install --save stackup 

und erfordern es dann:

require('stackup'); 

Mehr Infos hier: https://github.com/groundwater/node-stackup

1

In Knoten 8 Version async_hooks

trace verwendet diese für async erschienen Stack Spuren

Verwandte Themen