Edge Runtime
Der 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-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 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 | Repräsentiert ein Array von Werten |
ArrayBuffer | Repräsentiert einen generischen, festlangen Rohdatenpuffer für binäre Daten |
Atomics | Bietet atomare Operationen als statische Methoden |
BigInt | Repräsentiert eine Ganzzahl mit beliebiger Präzision |
BigInt64Array | Repräsentiert ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzzahlen |
BigUint64Array | Repräsentiert ein typisiertes Array von 64-Bit vorzeichenlosen Ganzzahlen |
Boolean | Repräsentiert eine logische Entität und kann zwei Werte haben: true und false |
clearInterval | Bricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setInterval() eingerichtet wurde |
clearTimeout | Bricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setTimeout() eingerichtet wurde |
console | Bietet Zugriff auf die Debugging-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 Uniform Resource Identifier (URI)-Komponente, die zuvor durch encodeURIComponent oder eine ähnliche Routine erstellt wurde |
DOMException | Repräsentiert einen Fehler, 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 | Repräsentiert einen Fehler beim Versuch, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen |
EvalError | Repräsentiert einen Fehler, der in Bezug auf die globale Funktion eval() auftritt |
Float32Array | Repräsentiert ein typisiertes Array von 32-Bit Fließkommazahlen |
Float64Array | Repräsentiert ein typisiertes Array von 64-Bit Fließkommazahlen |
Function | Repräsentiert eine Funktion |
Infinity | Repräsentiert den mathematischen Wert Unendlich |
Int8Array | Repräsentiert ein typisiertes Array von 8-Bit vorzeichenbehafteten Ganzzahlen |
Int16Array | Repräsentiert ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzzahlen |
Int32Array | Repräsentiert ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzzahlen |
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 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 | Repräsentiert den eventuellen Abschluss (oder Fehler) einer asynchronen Operation und ihren resultierenden Wert |
Proxy | Repräsentiert ein Objekt, 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 | Repräsentiert einen Fehler, wenn ein Wert nicht in der Menge oder dem Bereich der erlaubten Werte liegt |
ReferenceError | Repräsentiert einen Fehler, wenn auf eine nicht existierende Variable verwiesen wird |
Reflect | Bietet Methoden für abfangbare JavaScript-Operationen |
RegExp | Repräsentiert einen regulären Ausdruck, der es ermöglicht, Zeichenkombinationen abzugleichen |
Set | Repräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf |
setInterval | Ruft eine Funktion wiederholt mit einem festen Zeitabstand zwischen den Aufrufen auf |
setTimeout | Ruft eine Funktion auf oder wertet einen Ausdruck nach einer bestimmten Anzahl von Millisekunden aus |
SharedArrayBuffer | Repräsentiert einen generischen, festlangen Rohdatenpuffer für binäre Daten |
String | Repräsentiert eine Zeichenfolge |
structuredClone | Erstellt eine tiefe Kopie eines Werts |
Symbol | Repräsentiert einen eindeutigen und unveränderlichen Datentyp, der als Schlüssel einer Objekteigenschaft verwendet wird |
SyntaxError | Repräsentiert einen Fehler beim Versuch, syntaktisch ungültigen Code zu interpretieren |
TypeError | Repräsentiert einen Fehler, wenn ein Wert nicht vom erwarteten Typ ist |
Uint8Array | Repräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen |
Uint8ClampedArray | Repräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen, die auf 0-255 begrenzt sind |
Uint32Array | Repräsentiert ein typisiertes Array von 32-Bit vorzeichenlosen Ganzzahlen |
URIError | Repräsentiert einen Fehler, wenn eine globale URI-Behandlungsfunktion falsch verwendet wurde |
URL | Repräsentiert ein Objekt, das statische Methoden zum Erstellen von Objekt-URLs bereitstellt |
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, bei denen die Schlüssel schwach referenziert werden |
WeakSet | Repräsentiert eine Sammlung von Objekten, bei denen 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.- Die direkte Verwendung von
require
ist nicht erlaubt. Verwenden Sie stattdessen ES Modules.
Die folgenden JavaScript-Sprachfeatures sind deaktiviert und funktionieren nicht:
API | Beschreibung |
---|---|
eval | Wertet als String dargestellten JavaScript-Code aus |
new Function(evalString) | Erstellt eine neue Funktion mit dem als Argument übergebenen 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: Wenn diese Anweisungen auf dem Edge ausgeführt werden, werden sie einen Fehler verursachen und zu einem Laufzeitfehler führen.