Edge Runtime

Die Next.js Edge Runtime basiert auf standardmäßigen Web-APIs und unterstützt die folgenden APIs:

Netzwerk-APIs

APIBeschreibung
BlobRepräsentiert ein Blob
fetchLädt eine Ressource
FetchEventRepräsentiert ein Fetch-Ereignis
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 base-64-kodierten String
btoaKodiert einen String in base-64
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
ReadableStreamBYOBReaderRepräsentiert einen Reader eines ReadableStream
ReadableStreamDefaultReaderRepräsentiert einen Reader eines ReadableStream
TransformStreamRepräsentiert einen Transform-Stream
WritableStreamRepräsentiert einen beschreibbaren Stream
WritableStreamDefaultWriterRepräsentiert einen Writer eines WritableStream

Krypto-APIs

APIBeschreibung
cryptoBietet Zugriff auf die kryptografischen Funktionen der Plattform
CryptoKeyRepräsentiert einen kryptografischen Schlüssel
SubtleCryptoBietet Zugriff auf gängige kryptografische Primitive wie Hashing, Signieren, Verschlüsselung oder Entschlüsselung

Web-Standard-APIs

APIBeschreibung
AbortControllerErmöglicht das Abbrechen von einer oder mehreren DOM-Anfragen nach Bedarf
ArrayStellt ein Array von Werten dar
ArrayBufferStellt einen generischen, festlangen Rohdatenpuffer für binäre Daten dar
AtomicsBietet atomare Operationen als statische Methoden
BigIntStellt eine Ganzzahl mit beliebiger Präzision dar
BigInt64ArrayStellt ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzzahlen dar
BigUint64ArrayStellt ein typisiertes Array von 64-Bit vorzeichenlosen Ganzzahlen dar
BooleanStellt eine logische Entität dar und kann zwei Werte haben: true und false
clearIntervalBricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setInterval() festgelegt wurde
clearTimeoutBricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setTimeout() festgelegt wurde
consoleBietet Zugriff auf die Debugging-Konsole des Browsers
DataViewStellt eine generische Ansicht eines ArrayBuffer dar
DateStellt einen einzelnen Zeitpunkt in einem plattformunabhängigen Format dar
decodeURIDekodiert einen Uniform Resource Identifier (URI), der zuvor durch encodeURI oder eine ähnliche Routine erstellt wurde
decodeURIComponentDekodiert eine Uniform Resource Identifier (URI)-Komponente, die zuvor durch encodeURIComponent oder eine ähnliche Routine erstellt wurde
DOMExceptionStellt einen Fehler dar, der im DOM auftritt
encodeURIKodiert 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
encodeURIComponentKodiert 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
ErrorStellt einen Fehler dar, der beim Versuch auftritt, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen
EvalErrorStellt einen Fehler dar, der in Bezug auf die globale Funktion eval() auftritt
Float32ArrayStellt ein typisiertes Array von 32-Bit Fließkommazahlen dar
Float64ArrayStellt ein typisiertes Array von 64-Bit Fließkommazahlen dar
FunctionStellt eine Funktion dar
InfinityStellt den mathematischen Unendlichkeitswert dar
Int8ArrayStellt ein typisiertes Array von 8-Bit vorzeichenbehafteten Ganzzahlen dar
Int16ArrayStellt ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzzahlen dar
Int32ArrayStellt ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzzahlen dar
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 umgekehrt
MapStellt eine Sammlung von Werten dar, wobei jeder Wert nur einmal vorkommen darf
MathBietet Zugriff auf mathematische Funktionen und Konstanten
NumberStellt einen numerischen Wert dar
ObjectStellt das Objekt dar, das die Basis aller JavaScript-Objekte ist
parseFloatParst ein String-Argument und gibt eine Fließkommazahl zurück
parseIntParst ein String-Argument und gibt eine Ganzzahl der angegebenen Basis zurück
PromiseStellt den eventuellen Abschluss (oder Fehler) einer asynchronen Operation und ihren resultierenden Wert dar
ProxyStellt ein Objekt dar, das verwendet wird, um benutzerdefiniertes Verhalten für grundlegende Operationen zu definieren (z.B. Eigenschaftszugriff, Zuweisung, Enumeration, Funktionsaufruf usw.)
queueMicrotaskFügt einen Microtask zur Ausführung in die Warteschlange ein
RangeErrorStellt einen Fehler dar, wenn ein Wert nicht in der Menge oder im Bereich der zulässigen Werte liegt
ReferenceErrorStellt einen Fehler dar, wenn auf eine nicht existierende Variable verwiesen wird
ReflectBietet Methoden für abfangbare JavaScript-Operationen
RegExpStellt einen regulären Ausdruck dar, der es ermöglicht, Zeichenkombinationen abzugleichen
SetStellt eine Sammlung von Werten dar, wobei jeder Wert nur einmal vorkommen darf
setIntervalRuft eine Funktion wiederholt auf, mit einer festen Zeitverzögerung zwischen jedem Aufruf
setTimeoutRuft eine Funktion auf oder wertet einen Ausdruck nach einer bestimmten Anzahl von Millisekunden aus
SharedArrayBufferStellt einen generischen, festlangen Rohdatenpuffer für binäre Daten dar
StringStellt eine Zeichenfolge dar
structuredCloneErstellt eine tiefe Kopie eines Werts
SymbolStellt einen eindeutigen und unveränderlichen Datentyp dar, der als Schlüssel einer Objekteigenschaft verwendet wird
SyntaxErrorStellt einen Fehler dar, der beim Versuch auftritt, syntaktisch ungültigen Code zu interpretieren
TypeErrorStellt einen Fehler dar, wenn ein Wert nicht vom erwarteten Typ ist
Uint8ArrayStellt ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen dar
Uint8ClampedArrayStellt ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen dar, die auf 0-255 begrenzt sind
Uint32ArrayStellt ein typisiertes Array von 32-Bit vorzeichenlosen Ganzzahlen dar
URIErrorStellt einen Fehler dar, wenn eine globale URI-Behandlungsfunktion falsch verwendet wurde
URLStellt ein Objekt dar, das statische Methoden zum Erstellen von Objekt-URLs bereitstellt
URLPatternStellt ein URL-Muster dar
URLSearchParamsStellt eine Sammlung von Schlüssel/Wert-Paaren dar
WeakMapStellt eine Sammlung von Schlüssel/Wert-Paaren dar, in der die Schlüssel schwach referenziert sind
WeakSetStellt eine Sammlung von Objekten dar, in der jedes Objekt nur einmal vorkommen darf
WebAssemblyBietet 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:

APIBeschreibung
evalWertet als String dargestellten JavaScript-Code aus
new Function(evalString)Erstellt eine neue Funktion mit dem als Argument bereitgestellten Code
WebAssembly.compileKompiliert ein WebAssembly-Modul aus einer Buffer-Quelle
WebAssembly.instantiateKompiliert 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.