clinic.js — Überwachung von TypeScript-Anwendungen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist clinic.js?

Clinic.js ist eine Sammlung von Werkzeugen zur Überwachung und Profilerstellung von Node.js-Anwendungen, die in TypeScript geschrieben sind. Es ermöglicht Entwicklern, Leistungsengpässe, Speicherlecks und Probleme mit der Event Loop zu identifizieren. Die Bibliothek bietet visuelle Berichte in Form von Flamegraph, Bubbleprof und Heapprofiler.

Warum ist die Überwachung von TypeScript wichtig?

TypeScript wird in JavaScript kompiliert, aber auf Ausführungsebene ist es derselbe Node.js. Ohne Überwachung ist es unmöglich zu verstehen, warum eine Anwendung unter Last langsamer wird. Clinic.js hilft:

  • Langsame Funktionen und asynchrone Operationen zu erkennen
  • Die Speichernutzung zu analysieren
  • Die Event Loop zu optimieren (z. B. bei der Arbeit mit schweren Berechnungen)
  • Die Leistung vor und nach dem Refactoring zu vergleichen

Installation

Installieren Sie clinic.js global über npm:

npm install -g clinic

Für die Verwendung in einem TypeScript-Projekt installieren Sie auch die Typen:

npm install --save-dev @types/node

Hauptfunktionen

  • clinic doctor — Allgemeine Diagnose des Anwendungszustands (Event Loop, Speicher, CPU)
  • clinic flame — Erstellung eines Flame-Graphen zur Analyse des Aufrufstapels
  • clinic bubbleprof — Visualisierung asynchroner Operationen (Promises, Callbacks)
  • clinic heapprofiler — Heap-Profiling zur Suche nach Speicherlecks

Beispiel zur Verwendung mit TypeScript

Angenommen, Sie haben eine Express-Anwendung mit TypeScript. Starten Sie sie mit clinic doctor:

clinic doctor -- node dist/index.js

Nach Beendigung der Arbeit (Strg+C) wird ein HTML-Bericht geöffnet. Beispielcode zum Testen:

import express from 'express';const app = express();

app.get('/heavy', (req, res) => { const arr = []; for (let i = 0; i < 1e6; i++) { arr.push(Math.random()); } res.send('Done');});

app.listen(3000, () => console.log('Server running'));

Belasten Sie es dann mit autocannon:

npx autocannon -c 10 -d 10 http://localhost:3000/heavy

Der Bericht zeigt, dass die Schleife die Event Loop blockiert.

Wann verwenden

  • Bei Leistungseinbrüchen in der Produktion
  • Vor der Skalierung der Anwendung
  • Beim Refactoring kritischer Codeabschnitte
  • Zur Optimierung asynchroner Abläufe (z. B. bei Verwendung von RxJS)

Fazit

Clinic.js ist ein Must-have-Werkzeug für jeden TypeScript-Entwickler, der mit Node.js arbeitet. Es ersetzt manuelles Logging und hilft, Probleme schnell zu finden, die im Debugger nicht aufspürbar sind.

Empfehlungen