TypeScript-Fehler TS2304: "cannot find name 'require'" – So beheben Sie ihn 2025

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

Einleitung: "Ihr alter Freund 'require' wird plötzlich unsichtbar"

\n\n

Sie schreiben in TypeScript, alles läuft geschmeidig, und dann – Peng! Der Compiler gibt eine eiskalte Meldung aus: „TS2304: Cannot find name 'require'“. Kommt Ihnen das bekannt vor? Wenn Sie von JavaScript zu TypeScript wechseln oder mit Node.js-Projekten arbeiten, sind Sie diesem Geist sicherlich schon begegnet. Im Jahr 2025 ist dieser Fehler immer noch in den Top-Trends von Stack Overflow (über 200.000 Aufrufe), aber die gute Nachricht: Er ist leicht zu besiegen.

\n\n

In diesem Artikel analysieren wir, warum TypeScript require nicht sieht, welche Konfigurationen Sie anpassen müssen und – am wichtigsten – wie Sie modernen Code schreiben, um dieses Problem für immer zu vergessen. Los geht's!

\n\n

Was ist TS2304 und warum tritt er auf?

\n\n

Der Fehler TS2304: Cannot find name 'require' tritt auf, wenn TypeScript die Definition der globalen Funktion require nicht finden kann. In JavaScript (insbesondere in der Node.js-Umgebung) ist require eine native Funktion zum Importieren von Modulen im CommonJS-Stil. TypeScript weiß jedoch standardmäßig nichts über die Node.js-Umgebung. Es geht davon aus, dass Sie in einem Browser arbeiten, wo require nicht existiert.

\n\n

Typisches Szenario:

\n\n
// app.ts\nconst express = require('express');\n// ❌ TS2304: Cannot find name 'require'\n
\n\n

Im Jahr 2025 verwendet TypeScript (bereits Version 5.x) standardmäßig ES-Module (import/export). Wenn Sie versuchen, require ohne korrekte Konfiguration zu verwenden, wird der Compiler zu Recht protestieren.

\n\n

Hauptursachen des Fehlers:

\n
    \n
  • Das Paket @types/node ist nicht installiert – TypeScript kennt die globalen Node.js-APIs nicht.
  • \n
  • Falsche Konfiguration der tsconfig.json – types: ["node"] fehlt oder module entspricht nicht CommonJS.
  • \n
  • Verwendung einer veralteten Syntax – Im Jahr 2025 ist es besser, import anstelle von require zu verwenden.
  • \n
  • Konflikt zwischen CommonJS und ESModules – Das Projekt ist auf ES-Module eingestellt, aber Sie schreiben Code im CommonJS-Stil.
  • \n
\n\n

Methode Nr. 1: Installation von @types/node (schnelle Lösung)

\n\n

Der einfachste und gebräuchlichste Weg ist, TypeScript zu ermöglichen, Node.js zu „sehen“. Installieren Sie dazu das Typenpaket:

\n\n
npm install --save-dev @types/node\n
\n\n

Fügen Sie danach in der tsconfig.json hinzu:

\n\n
{\n  "compilerOptions": {\n    "types": ["node"]\n  }\n}\n
\n\n

Jetzt kennt TypeScript die Funktion require, __dirname, process und andere globale Node.js-Objekte. Der Fehler wird verschwinden.

\n\n

Vorteile: schnell, funktioniert „out of the box“.
\nNachteile: Sie verwenden weiterhin die veraltete CommonJS-Syntax.

\n\n

Methode Nr. 2: Konfiguration von moduleResolution und esModuleInterop

\n\n

Wenn Sie require in einem Projekt verwenden möchten, das auf moderne Module eingestellt ist, fügen Sie in der tsconfig.json die folgenden Optionen hinzu:

\n\n
{\n  "compilerOptions": {\n    "module": "commonjs",\n    "moduleResolution": "node",\n    "esModuleInterop": true,\n    "allowSyntheticDefaultImports": true\n  }\n}\n
\n\n
    \n
  • "module": "commonjs" – gibt explizit an, dass der Ausgabecode im CommonJS-Format vorliegen soll.
  • \n
  • "moduleResolution": "node" – sucht Module wie Node.js (zuerst in node_modules).
  • \n
  • "esModuleInterop": true – ermöglicht den Import von CommonJS-Modulen über import (und umgekehrt).
  • \n
  • "allowSyntheticDefaultImports": true – erlaubt Standardimporte aus Modulen ohne Standardexport.
  • \n
\n\n

Beispiel für funktionierenden Code:

\n\n
import express = require('express');\n// oder sogar\nconst express                

Blogs

Buchempfehlungen