TypeScript .ts-Datei funktioniert nicht? Lösung des Fehlers "Unknown file extension"

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: "Ihre .ts-Datei öffnet sich nicht? Sie sind nicht allein"

\n\n

Stellen Sie sich vor: Sie schreiben coolen Code in TypeScript, speichern die Datei mit der Erweiterung .ts, führen den Befehl node myfile.ts aus... und erhalten als Antwort so etwas wie: "Unknown file extension ".ts". Kommt Ihnen bekannt vor? Wenn Sie auf Stack Overflow nachgeschaut haben, wissen Sie, dass diese Frage tausende Aufrufe und hunderte Kommentare gesammelt hat. Das Problem ist alt, aber immer noch aktuell.

\n\n

In diesem Artikel kopieren wir nicht einfach eine Antwort aus dem Forum. Wir analysieren warum dies passiert, wie man es behebt und was man tun kann, um diesen Fehler nie wieder zu sehen. Sie erfahren, wie Sie ein TypeScript-Projekt richtig konfigurieren, ts-node und die Konfiguration tsconfig.json verwenden. Los geht's!

\n\n

Warum tritt der Fehler "Unknown file extension ".ts" auf?

\n\n

Kommen wir direkt zum Kern. Node.js versteht standardmäßig keine .ts-Dateien. Es kennt nur .js, .json, .mjs und .cjs. Wenn Sie node myfile.ts schreiben, versucht Node.js ehrlich, den TypeScript-Code wie normales JavaScript auszuführen, stößt aber auf Syntax, die ihm unbekannt ist (z. B. Typen, Interfaces, Generics).

\n\n

Das Ergebnis ist ein Fehler. Es gibt aber auch eine andere Situation: Sie verwenden ts-node oder tsx, sehen aber trotzdem dieselbe Meldung. Warum? Weil in modernen Versionen von Node.js (ab Version 16) eine strenge Überprüfung der Erweiterungen in package.json hinzugefügt wurde, insbesondere wenn "type": "module" gesetzt ist.

\n\n

Hauptgründe:

\n
    \n
  • Direkter Start von node file.ts — Node.js kann TypeScript nicht spontan kompilieren.
  • \n
  • Fehlendes ts-node oder tsx — kein Tool zur Übersetzung vorhanden.
  • \n
  • Falsche Konfiguration von tsconfig.json — z. B. Modul oder Target nicht angegeben.
  • \n
  • Probleme mit package.json — wenn "type": "module" gesetzt ist, kann ts-node eine explizite Angabe der Erweiterung erfordern.
  • \n
\n\n

Lösung 1: ts-node verwenden (klassischer Weg)

\n\n

Der einfachste Weg, TypeScript ohne vorherige Kompilierung auszuführen, ist die Verwendung von ts-node. Dieses Paket kompiliert .ts-Dateien im Speicher und übergibt das Ergebnis an Node.js.

\n\n

Installation und Ausführung

\n
npm install -g ts-node\nts-node myfile.ts
\n\n

Wenn Sie ein lokales Projekt verwenden, installieren Sie es besser als dev-Abhängigkeit:

\n
npm install --save-dev ts-node\nnpx ts-node myfile.ts
\n\n

Beispiel einer einfachen Datei hello.ts:

\n
const greet = (name: string): string => {\n    return `Hallo, ${name}!`;\n};\n\nconsole.log(greet("Welt"));
\n\n

Ausführen: npx ts-node hello.ts — und wir sehen in der Konsole "Hallo, Welt!". Es funktioniert!

\n\n

Aber es gibt einen Haken: "type": "module"

\n

Wenn in Ihrer package.json "type": "module" angegeben ist, kann ts-node sich weigern zu arbeiten. In diesem Fall müssen Sie entweder diese Zeile vorübergehend entfernen oder das Flag --esm verwenden:

\n
npx ts-node --esm myfile.ts
\n\n

Lösung 2: tsx verwenden (modernes Werkzeug)

\n\n

tsx ist eine schnellere Alternative zu ts-node, basierend auf esbuild. Es funktioniert sofort mit ESM und benötigt keine zusätzlichen Flags.

\n\n

Installation:

\n
npm install --save-dev tsx
\n\n

Ausführung:

\n
npx tsx myfile.ts
\n\n

Beispiel mit modernen TypeScript-Funktionen:

\n
// types.ts\nexport interface User {\n    id: number;\n    name: string;\n    email: string;\n}\n\nconst user                

Blogs

Buchempfehlungen