Edge Runtime
Die Next.js Edge Runtime wird für Middleware verwendet und unterstützt die folgenden APIs:
Netzwerk-APIs
API | Beschreibung |
---|---|
Blob | Repräsentiert einen Blob |
fetch | Ruft eine Ressource ab |
FetchEvent | Repräsentiert ein Fetch-Event |
File | Repräsentiert eine Datei |
FormData | Repräsentiert Formulardaten |
Headers | Repräsentiert HTTP-Header |
Request | Repräsentiert eine HTTP-Anfrage |
Response | Repräsentiert eine HTTP-Antwort |
URLSearchParams | Repräsentiert URL-Suchparameter |
WebSocket | Repräsentiert eine WebSocket-Verbindung |
Kodierungs-APIs
API | Beschreibung |
---|---|
atob | Dekodiert einen Base64-kodierten String |
btoa | Kodiert einen String in Base64 |
TextDecoder | Dekodiert ein Uint8Array in einen String |
TextDecoderStream | Verkettbarer Decoder für Streams |
TextEncoder | Kodiert einen String in ein Uint8Array |
TextEncoderStream | Verkettbarer Encoder für Streams |
Stream-APIs
API | Beschreibung |
---|---|
ReadableStream | Repräsentiert einen lesbaren Stream |
ReadableStreamBYOBReader | Reader für einen ReadableStream |
ReadableStreamDefaultReader | Standard-Reader für einen ReadableStream |
TransformStream | Repräsentiert einen Transform-Stream |
WritableStream | Repräsentiert einen schreibbaren Stream |
WritableStreamDefaultWriter | Writer für einen WritableStream |
Krypto-APIs
API | Beschreibung |
---|---|
crypto | Bietet Zugriff auf die kryptografischen Funktionen der Plattform |
CryptoKey | Repräsentiert einen kryptografischen Schlüssel |
SubtleCrypto | Bietet Zugriff auf kryptografische Basisfunktionen wie Hashing, Signieren oder Verschlüsseln |
Web-Standard-APIs
API | Beschreibung |
---|---|
AbortController | Ermöglicht das Abbrechen von DOM-Anfragen nach Bedarf |
Array | Repräsentiert ein Array von Werten |
ArrayBuffer | Repräsentiert einen generischen Binärdatenpuffer fester Länge |
Atomics | Bietet atomare Operationen als statische Methoden |
BigInt | Repräsentiert eine ganze Zahl mit beliebiger Präzision |
BigInt64Array | Repräsentiert ein typisiertes Array von 64-Bit-Ganzzahlen mit Vorzeichen |
BigUint64Array | Repräsentiert ein typisiertes Array von 64-Bit-Ganzzahlen ohne Vorzeichen |
Boolean | Repräsentiert eine logische Einheit und kann zwei Werte haben: true und false |
clearInterval | Bricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch setInterval() eingerichtet wurde |
clearTimeout | Bricht eine zeitgesteuerte Aktion ab, die zuvor durch setTimeout() eingerichtet wurde |
console | Bietet Zugriff auf die Debug-Konsole des Browsers |
DataView | Repräsentiert eine generische Ansicht eines ArrayBuffer |
Date | Repräsentiert einen einzelnen Zeitpunkt in einem plattformunabhängigen Format |
decodeURI | Dekodiert einen Uniform Resource Identifier (URI), der zuvor durch encodeURI oder eine ähnliche Routine erstellt wurde |
decodeURIComponent | Dekodiert eine URI-Komponente, die zuvor durch encodeURIComponent oder eine ähnliche Routine erstellt wurde |
DOMException | Repräsentiert einen Fehler, der im DOM auftritt |
encodeURI | Kodiert einen URI, indem bestimmte Zeichen durch UTF-8-Escapesequenzen ersetzt werden |
encodeURIComponent | Kodiert eine URI-Komponente, indem bestimmte Zeichen durch UTF-8-Escapesequenzen ersetzt werden |
Error | Repräsentiert einen Fehler beim Versuch, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen |
EvalError | Repräsentiert einen Fehler im Zusammenhang mit der globalen Funktion eval() |
Float32Array | Repräsentiert ein typisiertes Array von 32-Bit-Gleitkommazahlen |
Float64Array | Repräsentiert ein typisiertes Array von 64-Bit-Gleitkommazahlen |
Function | Repräsentiert eine Funktion |
Infinity | Repräsentiert den mathematischen Wert Unendlich |
Int8Array | Repräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen mit Vorzeichen |
Int16Array | Repräsentiert ein typisiertes Array von 16-Bit-Ganzzahlen mit Vorzeichen |
Int32Array | Repräsentiert ein typisiertes Array von 32-Bit-Ganzzahlen mit Vorzeichen |
Intl | Bietet Zugriff auf Internationalisierungs- und Lokalisierungsfunktionalität |
isFinite | Bestimmt, ob ein Wert eine endliche Zahl ist |
isNaN | Bestimmt, ob ein Wert NaN ist oder nicht |
JSON | Bietet Funktionalität zum Konvertieren von JavaScript-Werten in das JSON-Format und zurück |
Map | Repräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf |
Math | Bietet Zugriff auf mathematische Funktionen und Konstanten |
Number | Repräsentiert einen numerischen Wert |
Object | Repräsentiert das Objekt, das die Basis aller JavaScript-Objekte bildet |
parseFloat | Analysiert ein String-Argument und gibt eine Gleitkommazahl zurück |
parseInt | Analysiert ein String-Argument und gibt eine Ganzzahl mit der angegebenen Basis zurück |
Promise | Repräsentiert die eventuelle Fertigstellung einer asynchronen Operation und deren resultierenden Wert |
Proxy | Repräsentiert ein Objekt zum Definieren von benutzerdefiniertem Verhalten für grundlegende Operationen |
queueMicrotask | Plant einen Microtask zur Ausführung ein |
RangeError | Repräsentiert einen Fehler, wenn ein Wert nicht im erlaubten Wertebereich liegt |
ReferenceError | Repräsentiert einen Fehler beim Zugriff auf nicht existierende Variablen |
Reflect | Bietet Methoden für abfangbare JavaScript-Operationen |
RegExp | Repräsentiert einen regulären Ausdruck zum Abgleichen von Zeichenkombinationen |
Set | Repräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf |
setInterval | Ruft eine Funktion wiederholt mit einer festen Zeitverzögerung zwischen den Aufrufen auf |
setTimeout | Ruft eine Funktion nach einer bestimmten Anzahl von Millisekunden auf |
SharedArrayBuffer | Repräsentiert einen generischen Binärdatenpuffer fester Länge |
String | Repräsentiert eine Zeichenkette |
structuredClone | Erstellt eine tiefe Kopie eines Wertes |
Symbol | Repräsentiert einen einzigartigen und unveränderlichen Datentyp, der als Schlüssel für Objekteigenschaften verwendet wird |
SyntaxError | Repräsentiert einen Fehler beim Versuch, syntaktisch ungültigen Code zu interpretieren |
TypeError | Repräsentiert einen Fehler, wenn ein Wert nicht dem erwarteten Typ entspricht |
Uint8Array | Repräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen ohne Vorzeichen |
Uint8ClampedArray | Repräsentiert ein typisiertes Array von 8-Bit-Ganzzahlen ohne Vorzeichen, begrenzt auf 0-255 |
Uint32Array | Repräsentiert ein typisiertes Array von 32-Bit-Ganzzahlen ohne Vorzeichen |
URIError | Repräsentiert einen Fehler bei falscher Verwendung einer globalen URI-Behandlungsfunktion |
URL | Repräsentiert ein Objekt mit statischen Methoden zum Erstellen von Objekt-URLs |
URLPattern | Repräsentiert ein URL-Muster |
URLSearchParams | Repräsentiert eine Sammlung von Schlüssel/Wert-Paaren |
WeakMap | Repräsentiert eine Sammlung von Schlüssel/Wert-Paaren mit schwachen Referenzen auf die Schlüssel |
WeakSet | Repräsentiert eine Sammlung von Objekten, wobei jedes Objekt nur einmal vorkommen darf |
WebAssembly | Bietet 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:
API | Beschreibung |
---|---|
eval | Wertet JavaScript-Code aus, der als String vorliegt |
new Function(evalString) | Erstellt eine neue Funktion mit dem als Argument übergebenen Code |
WebAssembly.compile | Kompiliert ein WebAssembly-Modul aus einer Pufferquelle |
WebAssembly.instantiate | Kompiliert 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:
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.