Fehler-Monitoring für Node.js.

Mit @sentry/node meldet deine Node.js-App unbehandelte Fehler, Express-Fehler und Promise-Ablehnungen an Fehlo.

Stand: 21.10.2026, @sentry/node 11.8.0. Mit Fehlo getestet am 19.10.2026.

1. Paket installieren

Terminal
npm install @sentry/node

Version 11 braucht Node.js ab 20.19, bei Node.js 22 ab 22.12.

2. SDK starten

Das SDK muss geladen sein, bevor deine App ihre Module lädt. Leg dazu eine eigene Datei an. Mit CommonJS:

instrument.js
const Sentry = require("@sentry/node");

Sentry.init({
  dsn: "https://<key>@app.fehlo.de/<project-id>",
  environment: process.env.NODE_ENV,
  release: "my-api@1.0.0",
  dataCollection: {
    userInfo: false,
  },
});

Mit ES-Modulen:

instrument.mjs
import * as Sentry from "@sentry/node";

Sentry.init({
  dsn: "https://<key>@app.fehlo.de/<project-id>",
  environment: process.env.NODE_ENV,
  release: "my-api@1.0.0",
  dataCollection: {
    userInfo: false,
  },
});

Dann startest du die App mit --import. Das gilt seit Version 11 auch für CommonJS; --require wird nicht mehr unterstützt.

Terminal
node --import ./instrument.js app.js
node --import ./instrument.mjs app.mjs

3. Express

Seit Version 11 erfasst das SDK Fehler aus Express selbst. setupExpressErrorHandler brauchst du nicht mehr. Gemeldet werden Fehler mit Status 500 und höher und solche ohne Status. Zum Testen:

app.js
const express = require("express");

const app = express();

app.get("/debug-fehlo", () => {
  throw new Error("Fehlo test error");
});

app.listen(3000);

Ruf http://localhost:3000/debug-fehlo auf; der Fehler erscheint nach wenigen Sekunden in Fehlo. Willst du auch 401 und 403 sehen, ergänze in Sentry.init:

instrument.js
integrations: [
  Sentry.expressIntegration({
    shouldHandleError(error) {
      const status = Number(error.status ?? error.statusCode ?? 500);
      return status === 401 || status === 403 || status >= 500;
    },
  }),
],

4. Source Maps für TypeScript

Wenn du TypeScript nach dist kompilierst, lade die Source Maps nach dem Build hoch, damit Stacktraces deine .ts-Dateien zeigen:

Terminal
export SENTRY_URL=https://app.fehlo.de/
export SENTRY_ORG=<organisation-slug>
export SENTRY_PROJECT=<project-slug>
export SENTRY_AUTH_TOKEN=<token>

npx sentry-cli sourcemaps inject dist
npx sentry-cli sourcemaps upload --release "my-api@1.0.0" dist

Das Token legst du in Fehlo unter Einstellungen, API-Tokens an, mit der Vorlage „Für Source Maps“. Organisation und Projekt stehen in der Adresszeile der Projekteinstellungen: /<organisation>/settings/projects/<projekt>.

Performance messen

Ergänze tracesSampleRate: 0.2, in Sentry.init. Transaktionen zählen zu einem eigenen Kontingent deines Plans, nicht zu den Ereignissen.

Häufige Fragen

Es kommt nichts an. Was prüfe ich?

Erstens den DSN: Er muss auf app.fehlo.de zeigen. Zweitens, ob dein Server oder Browser https://app.fehlo.de erreicht (Firewall, Proxy, Werbeblocker). Drittens, ob dein Kontingent für den Monat aufgebraucht ist; dann bekommst du eine Mail. Viertens, ob sampleRate oder beforeSend Ereignisse verwirft. Fehlen nur Performance-Daten, sind vielleicht die Transaktionen des Monats aufgebraucht.