require nicht definiert JavaScript: was der Fehler wirklich bedeutet
require nicht definiert JavaScript ist kein komplizierter Bug. Es ist fast immer ein Hinweis darauf, dass du CommonJS in einer Umgebung verwendest, die require() nicht kennt. Genau das passiert oft im Browser, in ES-Modules oder in falscher Node.js-Konfiguration.
Ich halte es einfach: require() ist nicht universell. Es funktioniert in Node.js mit CommonJS, aber nicht automatisch im Browser. Wenn du das verstehst, löst du den Fehler schnell und verhinderst ihn künftig komplett.
require nicht definiert JavaScript: die häufigsten Ursachen
Der Fehler hat fast immer eine dieser Ursachen:
- Du nutzt
require()im Browser, obwohl dort stattdessenimportgebraucht wird. - Dein Script ist als ES-Module geladen und daher ist
require()nicht verfügbar. - Deine Node.js-Datei wird falsch ausgeführt, zum Beispiel mit falscher Dateiendung oder falscher Package-Konfiguration.
- Ein Tooling-Problem wie Webpack, Vite oder Babel erzeugt eine Umgebung, in der
require()nicht existiert.
Wenn ich den Fehler sehe, prüfe ich zuerst die Umgebung. Nicht den Code. Das spart Zeit.
require nicht definiert JavaScript im Browser
Das ist der Klassiker. Im Browser gibt es von Haus aus kein require(). Wenn du also sowas schreibst:
const fs = require('fs');
dann wird das im Browser scheitern. fs ist außerdem ein Node.js-Modul und gehört nicht in den Browser.
Wenn du im Frontend arbeitest, nutze stattdessen ES-Module:
import something from './module.js';
Und wenn du externe Bibliotheken im Browser laden willst, nutze eine moderne Build-Umgebung oder direkte Script-Tags mit kompatiblen Bundles.
require nicht definiert JavaScript in ES-Modules
Ein weiterer häufiger Grund: Du hast dein Script als Modul deklariert, zum Beispiel so:
<script type="module" src="app.js"></script>
In diesem Fall ist require() nicht verfügbar. Module verwenden import und export. Das ist kein Fehler, sondern das neue Standardmodell von JavaScript.
Wenn ich mit Modulen arbeite, denke ich so:
- CommonJS =
require(),module.exports - ESM =
import,export
Beides mischen geht manchmal, aber nicht blind. Wenn du nicht genau weißt, was dein Projekt nutzt, bekommst du schnell Fehler wie require nicht definiert JavaScript.
require nicht definiert JavaScript in Node.js beheben
In Node.js sollte require() normalerweise funktionieren. Wenn es trotzdem nicht geht, prüfe diese Punkte:
- Datei-Endung: Nutzt dein Projekt
.mjsodertype: "module"in derpackage.json? - Modulsystem: Verwendest du ESM, aber schreibst CommonJS-Code?
- Ausführung: Startest du wirklich mit Node.js und nicht über den Browser?
- Package-Konfiguration: Ist in
package.jsonalles konsistent?
Wenn du in Node.js auf ESM umgestellt hast, ersetze require() durch import:
import express from 'express';
Wenn du bei CommonJS bleiben willst, dann halte das Projekt konsistent und nutze:
const express = require('express');
require nicht definiert JavaScript schnell fixen
So gehe ich bei der Fehlersuche vor, ohne Zeit zu verbrennen:
- Ich prüfe die Umgebung: Browser oder Node.js?
- Ich prüfe das Modulsystem: CommonJS oder ESM?
- Ich suche nach falschen Imports: Nutzt der Code
require()in einem Modul? - Ich trenne Frontend und Backend sauber: Browsercode bleibt browserfähig, Node-Code bleibt serverseitig.
- Ich teste die kleinste funktionierende Version: Erst der einfache Import, dann der Rest.
Mein Prinzip: Wenn eine Lösung kompliziert wirkt, ist oft die Umgebung falsch, nicht der Code selbst.
require nicht definiert JavaScript: typische Beispiele
Hier sind die Fälle, die ich ständig sehe:
Beispiel 1: Browser-Code mit require()
<script>
const axios = require('axios');
</script>
Das geht im Browser nicht. Nutze stattdessen ein Modul-Bundle oder einen Browser-kompatiblen Import.
Beispiel 2: ES-Module mit require()
import path from 'path';
const fs = require('fs');
Das ist ein Mischsystem. Entscheide dich für ESM oder CommonJS.
Beispiel 3: Falsche Erwartung bei Node und Browser
const crypto = require('crypto');
In Node.js okay. Im Browser nicht direkt nutzbar. Wenn du das im Frontend brauchst, brauchst du eine andere Lösung.
require nicht definiert JavaScript: die beste langfristige Lösung
Ich empfehle heute meistens ES-Module, wenn das Projekt neu ist. Warum? Weil sie Standard sind, sauber funktionieren und besser mit modernem Tooling harmonieren.
Wenn du ein altes Projekt pflegst, kann CommonJS weiter okay sein. Aber dann solltest du das Projekt nicht halb auf ESM und halb auf CommonJS umbauen. Genau da entstehen die meisten Fehler.
Meine einfache Regel:
- Neues Frontend-Projekt: ESM
- Modernes Node.js-Projekt: ESM, wenn möglich
- Legacy-Code: CommonJS nur dann, wenn du es bewusst so lässt
Hilfreiche Ressourcen zu require nicht definiert JavaScript
Wenn du tiefer einsteigen willst, sind diese offiziellen Ressourcen sinnvoll:
Fazit zu require nicht definiert JavaScript
Der Fehler require nicht definiert JavaScript ist meistens kein Rätsel. Er sagt dir nur: Du verwendest das falsche Modulsystem in der falschen Umgebung. Wenn du Browser und Node.js sauber trennst, zwischen ESM und CommonJS unterscheidest und deine Konfiguration prüfst, ist das Problem in Minuten gelöst. Genau so gehe ich immer vor bei require nicht definiert JavaScript.