Menu

Edge Runtime

Die Next.js Edge Runtime wird für Middleware verwendet und unterstützt die folgenden APIs:

Netzwerk-APIs

APIBeschreibung
BlobRepräsentiert einen Blob
fetchRuft eine Ressource ab
FetchEventRepräsentiert ein Fetch-Event
FileRepräsentiert eine Datei
FormDataRepräsentiert Formulardaten
HeadersRepräsentiert HTTP-Header
RequestRepräsentiert eine HTTP-Anfrage
ResponseRepräsentiert eine HTTP-Antwort
URLSearchParamsRepräsentiert URL-Suchparameter
WebSocketRepräsentiert eine WebSocket-Verbindung

Kodierungs-APIs

APIBeschreibung
atobDekodiert einen Base64-kodierten String
btoaKodiert einen String in Base64
TextDecoderDekodiert ein Uint8Array in einen String
TextDecoderStreamVerkettbarer Decoder für Streams
TextEncoderKodiert einen String in ein Uint8Array
TextEncoderStreamVerkettbarer Encoder für Streams

Stream-APIs

APIBeschreibung
ReadableStreamRepräsentiert einen lesbaren Stream
ReadableStreamBYOBReaderReader für einen ReadableStream
ReadableStreamDefaultReaderStandard-Reader für einen ReadableStream
TransformStreamRepräsentiert einen Transform-Stream
WritableStreamRepräsentiert einen schreibbaren Stream
WritableStreamDefaultWriterWriter für einen WritableStream

Krypto-APIs

APIBeschreibung
cryptoBietet Zugriff auf die kryptografischen Funktionen der Plattform
CryptoKeyRepräsentiert einen kryptografischen Schlüssel
SubtleCryptoBietet Zugriff auf kryptografische Basisfunktionen wie Hashing, Signieren oder Verschlüsseln

Web-Standard-APIs

APIBeschreibung
AbortControllerErmöglicht das Abbrechen von DOM-Anfragen nach Bedarf
ArrayRepräsentiert ein Array von Werten
ArrayBufferRepräsentiert einen generischen Binärdatenpuffer fester Länge
AtomicsBietet atomare Operationen als statische Methoden
BigIntRepräsentiert eine ganze Zahl mit beliebiger Präzision
BigInt64ArrayRepräsentiert ein typisiertes Array von 64-Bit-Ganzzahlen mit Vorzeichen
BigUint64ArrayRepräsentiert ein typisiertes Array von 64-Bit-Ganzzahlen ohne Vorzeichen
BooleanRepräsentiert eine logische Einheit und kann zwei Werte haben: true und false
clearIntervalBricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch setInterval() eingerichtet wurde
clearTimeoutBricht eine zeitgesteuerte Aktion ab, die zuvor durch setTimeout() eingerichtet wurde
consoleBietet Zugriff auf die Debug-Konsole des Browsers
DataViewRepräsentiert eine generische Ansicht eines ArrayBuffer
DateRepräsentiert einen einzelnen Zeitpunkt in einem plattformunabhängigen Format
decodeURIDekodiert einen Uniform Resource Identifier (URI), der zuvor durch encodeURI oder eine ähnliche Routine erstellt wurde
decodeURIComponentDekodiert eine URI-Komponente, die zuvor durch encodeURIComponent oder eine ähnliche Routine erstellt wurde
DOMExceptionRepräsentiert einen Fehler, der im DOM auftritt
encodeURIKodiert einen URI, indem bestimmte Zeichen durch UTF-8-Escapesequenzen ersetzt werden
encodeURIComponentKodiert eine URI-Komponente, indem bestimmte Zeichen durch UTF-8-Escapesequenzen ersetzt werden
ErrorRepräsentiert einen Fehler beim Versuch, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen
EvalErrorRepräsentiert einen Fehler im Zusammenhang mit der globalen Funktion eval()
Float32ArrayRepräsentiert ein typisiertes Array von 32-Bit-Gleitkommazahlen
Float64ArrayRepräsentiert ein typisiertes Array von 64-Bit-Gleitkommazahlen
FunctionRepräsentiert eine Funktion
InfinityRepräsentiert den mathematischen Wert Unendlich
Int8ArrayRepräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen mit Vorzeichen
Int16ArrayRepräsentiert ein typisiertes Array von 16-Bit-Ganzzahlen mit Vorzeichen
Int32ArrayRepräsentiert ein typisiertes Array von 32-Bit-Ganzzahlen mit Vorzeichen
IntlBietet Zugriff auf Internationalisierungs- und Lokalisierungsfunktionalität
isFiniteBestimmt, ob ein Wert eine endliche Zahl ist
isNaNBestimmt, ob ein Wert NaN ist oder nicht
JSONBietet Funktionalität zum Konvertieren von JavaScript-Werten in das JSON-Format und zurück
MapRepräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf
MathBietet Zugriff auf mathematische Funktionen und Konstanten
NumberRepräsentiert einen numerischen Wert
ObjectRepräsentiert das Objekt, das die Basis aller JavaScript-Objekte bildet
parseFloatAnalysiert ein String-Argument und gibt eine Gleitkommazahl zurück
parseIntAnalysiert ein String-Argument und gibt eine Ganzzahl mit der angegebenen Basis zurück
PromiseRepräsentiert die eventuelle Fertigstellung einer asynchronen Operation und deren resultierenden Wert
ProxyRepräsentiert ein Objekt zum Definieren von benutzerdefiniertem Verhalten für grundlegende Operationen
queueMicrotaskPlant einen Microtask zur Ausführung ein
RangeErrorRepräsentiert einen Fehler, wenn ein Wert nicht im erlaubten Wertebereich liegt
ReferenceErrorRepräsentiert einen Fehler beim Zugriff auf nicht existierende Variablen
ReflectBietet Methoden für abfangbare JavaScript-Operationen
RegExpRepräsentiert einen regulären Ausdruck zum Abgleichen von Zeichenkombinationen
SetRepräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf
setIntervalRuft eine Funktion wiederholt mit einer festen Zeitverzögerung zwischen den Aufrufen auf
setTimeoutRuft eine Funktion nach einer bestimmten Anzahl von Millisekunden auf
SharedArrayBufferRepräsentiert einen generischen Binärdatenpuffer fester Länge
StringRepräsentiert eine Zeichenkette
structuredCloneErstellt eine tiefe Kopie eines Wertes
SymbolRepräsentiert einen einzigartigen und unveränderlichen Datentyp, der als Schlüssel für Objekteigenschaften verwendet wird
SyntaxErrorRepräsentiert einen Fehler beim Versuch, syntaktisch ungültigen Code zu interpretieren
TypeErrorRepräsentiert einen Fehler, wenn ein Wert nicht dem erwarteten Typ entspricht
Uint8ArrayRepräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen ohne Vorzeichen
Uint8ClampedArrayRepräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen ohne Vorzeichen, begrenzt auf 0-255
Uint32ArrayRepräsentiert ein typisiertes Array von 32-Bit-Ganzzahlen ohne Vorzeichen
URIErrorRepräsentiert einen Fehler bei falscher Verwendung einer globalen URI-Behandlungsfunktion
URLRepräsentiert ein Objekt mit statischen Methoden zum Erstellen von Objekt-URLs
URLPatternRepräsentiert ein URL-Muster
URLSearchParamsRepräsentiert eine Sammlung von Schlüssel/Wert-Paaren
WeakMapRepräsentiert eine Sammlung von Schlüssel/Wert-Paaren mit schwachen Referenzen auf die Schlüssel
WeakSetRepräsentiert eine Sammlung von Objekten, wobei jedes Objekt nur einmal vorkommen darf
WebAssemblyBietet Zugriff auf WebAssembly

Next.js-spezifische Polyfills

Umgebungsvariablen

Mit process.env kannst du auf Umgebungsvariablen sowohl für next dev als auch für next build zugreifen.

Nicht unterstützte APIs

Die Edge Runtime hat einige Einschränkungen:

  • Native Node.js-APIs werden nicht unterstützt. Du kannst zum Beispiel nicht auf das Dateisystem zugreifen.
  • node_modules können verwendet werden, solange sie ES Module implementieren und keine nativen Node.js-APIs verwenden.
  • Der direkte Aufruf von require ist nicht erlaubt. Verwende stattdessen ES Module.

Die folgenden JavaScript-Sprachfunktionen sind deaktiviert und werden nicht funktionieren:

APIBeschreibung
evalWertet JavaScript-Code aus, der als String vorliegt
new Function(evalString)Erstellt eine neue Funktion mit dem als Argument übergebenen Code
WebAssembly.compileKompiliert ein WebAssembly-Modul aus einer Pufferquelle
WebAssembly.instantiateKompiliert und instanziiert ein WebAssembly-Modul aus einer Pufferquelle

In seltenen Fällen könnte dein Code einige dynamische Code-Auswertungsanweisungen enthalten (oder importieren), die zur Laufzeit nicht erreicht werden können und die nicht durch Tree-Shaking entfernt werden können. Du kannst die Prüfung für bestimmte Dateien in deiner Middleware-Konfiguration lockern:

middleware.ts
export const config = {
  unstable_allowDynamic: [
    // erlaubt eine einzelne Datei
    '/lib/utilities.js',
    // verwendet einen Glob, um alles im function-bind Drittanbietermodul zu erlauben
    '/node_modules/function-bind/**',
  ],
}

unstable_allowDynamic ist ein Glob oder ein Array von Globs, die die dynamische Code-Auswertung für bestimmte Dateien ignorieren. Die Globs sind relativ zu deinem Anwendungs-Stammordner.

Sei gewarnt, dass diese Anweisungen einen Fehler werfen und einen Laufzeitfehler verursachen werden, wenn sie an der Edge ausgeführt werden.