Auf der Node.js-Seite steht :
Der Knoten verlässt die Ereignisschleife, wenn keine Rückrufe mehr ausgeführt werden müssen.
Gibt es eine Möglichkeit herauszufinden, welche Rückrufe das Beenden von Node verhindern?
Auf der Node.js-Seite steht :
Der Knoten verlässt die Ereignisschleife, wenn keine Rückrufe mehr ausgeführt werden müssen.
Gibt es eine Möglichkeit herauszufinden, welche Rückrufe das Beenden von Node verhindern?
Antworten:
Sie können process._getActiveHandles()
und verwendenprocess._getActiveRequests()
Siehe diese Diskussion in der Mailingliste von node.js.
Update: Dafür gibt es ein gutes Paket - https://github.com/mafintosh/why-is-node-running
"totally spacing on the name, it's like "process._getOpenHandles()" or something equally hard to remember"
. Ich googelte herum und versuchte, den eigentlichen Anruf zu finden. Danke noch einmal.
node_globals.js
und es nicht gefunden. Jetzt greife ich nach der Codebasis des Knotens, weiß, wonach ich suchen muss, und stelle fest, dass sie in node.cc definiert sind. process._getActiveHandles () ist src/node.cc:2345: NODE_SET_METHOD(process, "_getActiveHandles", GetActiveHandles);
Hah! Ausgezeichnet.
Es gibt ein npm-Modul wtfnode , das anzeigt , was die nodejs-App am Laufen hält, wenn Sie SIGINT (Strg-C) an sie senden.
Es wird intern verwendet, process._getActiveHandles()
wie in der Antwort von @ andrey-sidrov erwähnt. Der Vorteil der Verwendung wtfnode
besteht darin, dass die Ausgabe einfach zu lesen ist.