Edge Runtime
Die Next.js Edge Runtime basiert auf standardmäßigen Web-APIs und unterstützt die folgenden APIs:
Netzwerk-APIs
API | Beschreibung |
---|---|
Blob | Repräsentiert ein Blob |
fetch | Lädt eine Ressource |
FetchEvent | Repräsentiert ein Fetch-Ereignis |
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 base-64-kodierten String |
btoa | Kodiert einen String in base-64 |
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 | Repräsentiert einen Reader eines ReadableStream |
ReadableStreamDefaultReader | Repräsentiert einen Reader eines ReadableStream |
TransformStream | Repräsentiert einen Transform-Stream |
WritableStream | Repräsentiert einen beschreibbaren Stream |
WritableStreamDefaultWriter | Repräsentiert einen Writer eines 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 gängige kryptografische Primitive wie Hashing, Signieren, Verschlüsselung oder Entschlüsselung |
Web-Standard-APIs
API | Beschreibung |
---|---|
AbortController | Ermöglicht das Abbrechen von einer oder mehreren DOM-Anfragen nach Bedarf |
Array | Stellt ein Array von Werten dar |
ArrayBuffer | Stellt einen generischen, festlangen Rohdatenpuffer für binäre Daten dar |
Atomics | Bietet atomare Operationen als statische Methoden |
BigInt | Stellt eine Ganzzahl mit beliebiger Präzision dar |
BigInt64Array | Stellt ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzzahlen dar |
BigUint64Array | Stellt ein typisiertes Array von 64-Bit vorzeichenlosen Ganzzahlen dar |
Boolean | Stellt eine logische Entität dar und kann zwei Werte haben: true und false |
clearInterval | Bricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setInterval() festgelegt wurde |
clearTimeout | Bricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setTimeout() festgelegt wurde |
console | Bietet Zugriff auf die Debugging-Konsole des Browsers |
DataView | Stellt eine generische Ansicht eines ArrayBuffer dar |
Date | Stellt einen einzelnen Zeitpunkt in einem plattformunabhängigen Format dar |
decodeURI | Dekodiert einen Uniform Resource Identifier (URI), der zuvor durch encodeURI oder eine ähnliche Routine erstellt wurde |
decodeURIComponent | Dekodiert eine Uniform Resource Identifier (URI)-Komponente, die zuvor durch encodeURIComponent oder eine ähnliche Routine erstellt wurde |
DOMException | Stellt einen Fehler dar, der im DOM auftritt |
encodeURI | Kodiert einen Uniform Resource Identifier (URI), indem jedes Vorkommen bestimmter Zeichen durch eine, zwei, drei oder vier Escape-Sequenzen ersetzt wird, die die UTF-8-Kodierung des Zeichens darstellen |
encodeURIComponent | Kodiert eine Uniform Resource Identifier (URI)-Komponente, indem jedes Vorkommen bestimmter Zeichen durch eine, zwei, drei oder vier Escape-Sequenzen ersetzt wird, die die UTF-8-Kodierung des Zeichens darstellen |
Error | Stellt einen Fehler dar, der beim Versuch auftritt, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen |
EvalError | Stellt einen Fehler dar, der in Bezug auf die globale Funktion eval() auftritt |
Float32Array | Stellt ein typisiertes Array von 32-Bit Fließkommazahlen dar |
Float64Array | Stellt ein typisiertes Array von 64-Bit Fließkommazahlen dar |
Function | Stellt eine Funktion dar |
Infinity | Stellt den mathematischen Unendlichkeitswert dar |
Int8Array | Stellt ein typisiertes Array von 8-Bit vorzeichenbehafteten Ganzzahlen dar |
Int16Array | Stellt ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzzahlen dar |
Int32Array | Stellt ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzzahlen dar |
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 umgekehrt |
Map | Stellt eine Sammlung von Werten dar, wobei jeder Wert nur einmal vorkommen darf |
Math | Bietet Zugriff auf mathematische Funktionen und Konstanten |
Number | Stellt einen numerischen Wert dar |
Object | Stellt das Objekt dar, das die Basis aller JavaScript-Objekte ist |
parseFloat | Parst ein String-Argument und gibt eine Fließkommazahl zurück |
parseInt | Parst ein String-Argument und gibt eine Ganzzahl der angegebenen Basis zurück |
Promise | Stellt den eventuellen Abschluss (oder Fehler) einer asynchronen Operation und ihren resultierenden Wert dar |
Proxy | Stellt ein Objekt dar, das verwendet wird, um benutzerdefiniertes Verhalten für grundlegende Operationen zu definieren (z.B. Eigenschaftszugriff, Zuweisung, Enumeration, Funktionsaufruf usw.) |
queueMicrotask | Fügt einen Microtask zur Ausführung in die Warteschlange ein |
RangeError | Stellt einen Fehler dar, wenn ein Wert nicht in der Menge oder im Bereich der zulässigen Werte liegt |
ReferenceError | Stellt einen Fehler dar, wenn auf eine nicht existierende Variable verwiesen wird |
Reflect | Bietet Methoden für abfangbare JavaScript-Operationen |
RegExp | Stellt einen regulären Ausdruck dar, der es ermöglicht, Zeichenkombinationen abzugleichen |
Set | Stellt eine Sammlung von Werten dar, wobei jeder Wert nur einmal vorkommen darf |
setInterval | Ruft eine Funktion wiederholt auf, mit einer festen Zeitverzögerung zwischen jedem Aufruf |
setTimeout | Ruft eine Funktion auf oder wertet einen Ausdruck nach einer bestimmten Anzahl von Millisekunden aus |
SharedArrayBuffer | Stellt einen generischen, festlangen Rohdatenpuffer für binäre Daten dar |
String | Stellt eine Zeichenfolge dar |
structuredClone | Erstellt eine tiefe Kopie eines Werts |
Symbol | Stellt einen eindeutigen und unveränderlichen Datentyp dar, der als Schlüssel einer Objekteigenschaft verwendet wird |
SyntaxError | Stellt einen Fehler dar, der beim Versuch auftritt, syntaktisch ungültigen Code zu interpretieren |
TypeError | Stellt einen Fehler dar, wenn ein Wert nicht vom erwarteten Typ ist |
Uint8Array | Stellt ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen dar |
Uint8ClampedArray | Stellt ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen dar, die auf 0-255 begrenzt sind |
Uint32Array | Stellt ein typisiertes Array von 32-Bit vorzeichenlosen Ganzzahlen dar |
URIError | Stellt einen Fehler dar, wenn eine globale URI-Behandlungsfunktion falsch verwendet wurde |
URL | Stellt ein Objekt dar, das statische Methoden zum Erstellen von Objekt-URLs bereitstellt |
URLPattern | Stellt ein URL-Muster dar |
URLSearchParams | Stellt eine Sammlung von Schlüssel/Wert-Paaren dar |
WeakMap | Stellt eine Sammlung von Schlüssel/Wert-Paaren dar, in der die Schlüssel schwach referenziert sind |
WeakSet | Stellt eine Sammlung von Objekten dar, in der jedes Objekt nur einmal vorkommen darf |
WebAssembly | Bietet Zugriff auf WebAssembly |
Next.js-spezifische Polyfills
Umgebungsvariablen
Sie können process.env
verwenden, um auf Umgebungsvariablen sowohl für next dev
als auch für next build
zuzugreifen.
Nicht unterstützte APIs
Die Edge Runtime hat einige Einschränkungen, darunter:
- Native Node.js-APIs werden nicht unterstützt. Zum Beispiel können Sie nicht auf das Dateisystem zugreifen oder darin schreiben.
node_modules
können verwendet werden, solange sie ES Modules implementieren und keine nativen Node.js-APIs verwenden.- Der direkte Aufruf von
require
ist nicht erlaubt. Verwenden Sie stattdessen ES Modules.
Die folgenden JavaScript-Sprachfeatures sind deaktiviert und werden nicht funktionieren:
API | Beschreibung |
---|---|
eval | Wertet als String dargestellten JavaScript-Code aus |
new Function(evalString) | Erstellt eine neue Funktion mit dem als Argument bereitgestellten Code |
WebAssembly.compile | Kompiliert ein WebAssembly-Modul aus einer Buffer-Quelle |
WebAssembly.instantiate | Kompiliert und instanziiert ein WebAssembly-Modul aus einer Buffer-Quelle |
In seltenen Fällen könnte Ihr Code (oder importierte Bibliotheken) dynamische Code-Auswertungsanweisungen enthalten, die zur Laufzeit nicht erreicht werden können und die nicht durch Treeshaking entfernt werden können. Sie können die Überprüfung lockern, um bestimmte Dateien in Ihrer Middleware oder Edge API Route über die exportierte Konfiguration zuzulassen:
export const config = {
runtime: 'edge', // nur für Edge API Routes
unstable_allowDynamic: [
// erlaubt eine einzelne Datei
'/lib/utilities.js',
// verwendet einen Glob, um alles im function-bind Modul von Drittanbietern zuzulassen
'/node_modules/function-bind/**',
],
}
unstable_allowDynamic
ist ein Glob oder ein Array von Globs, das die dynamische Code-Auswertung für bestimmte Dateien ignoriert. Die Globs sind relativ zum Stammverzeichnis Ihrer Anwendung.
Seien Sie gewarnt, dass diese Anweisungen, wenn sie auf dem Edge ausgeführt werden, eine Laufzeitfehler verursachen werden.