Edge Runtime
Next.js bietet zwei Server-Runtimes, die Sie in Ihrer Anwendung verwenden können:
- Die Node.js Runtime (Standard), die Zugriff auf alle Node.js-APIs hat und zum Rendern Ihrer Anwendung verwendet wird.
- Die Edge Runtime, die einen eingeschränkteren Satz von APIs enthält und in Middleware verwendet wird.
Einschränkungen
- Die Edge Runtime unterstützt nicht alle Node.js-APIs. Einige Pakete funktionieren möglicherweise nicht wie erwartet.
- Die Edge Runtime unterstützt kein Incremental Static Regeneration (ISR).
- Beide Runtimes können Streaming unterstützen, abhängig von Ihrem Deployment-Adapter.
Referenz
Die Edge Runtime 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 für ReadableStream |
ReadableStreamDefaultReader | Repräsentiert einen Reader für ReadableStream |
TransformStream | Repräsentiert einen Transform-Stream |
WritableStream | Repräsentiert einen beschreibbaren Stream |
WritableStreamDefaultWriter | Repräsentiert einen Writer für 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 einer oder mehrerer 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 ganze Zahl mit beliebiger Präzision |
BigInt64Array | Repräsentiert ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzahlen |
BigUint64Array | Repräsentiert ein typisiertes Array von 64-Bit vorzeichenlosen Ganzahlen |
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() 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 | 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 Ganzahlen |
Int16Array | Repräsentiert ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzahlen |
Int32Array | Repräsentiert ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzahlen |
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 | 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 eventualen 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 etc.) |
queueMicrotask | Plant die Ausführung eines Microtasks |
RangeError | Repräsentiert einen Fehler, wenn ein Wert nicht in der Menge oder im 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 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 | 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 Ganzahlen |
Uint8ClampedArray | Repräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzahlen, die auf 0-255 begrenzt sind |
Uint32Array | Repräsentiert ein typisiertes Array von 32-Bit vorzeichenlosen Ganzahlen |
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, in der die Schlüssel schwach referenziert sind |
WeakSet | Repräsentiert eine Sammlung von Objekten, 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 unterliegt einigen Einschränkungen, darunter:
- Native Node.js-APIs werden nicht unterstützt. Beispielsweise 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 nutzen.- 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-Konfiguration zuzulassen:
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 auslösen und einen Laufzeitfehler verursachen.