Edge Runtime

Der 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-Event
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
ArrayRepräsentiert ein Array von Werten
ArrayBufferRepräsentiert einen generischen, festlangen Rohdatenpuffer für binäre Daten
AtomicsBietet atomare Operationen als statische Methoden
BigIntRepräsentiert eine Ganzzahl mit beliebiger Präzision
BigInt64ArrayRepräsentiert ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzzahlen
BigUint64ArrayRepräsentiert ein typisiertes Array von 64-Bit vorzeichenlosen Ganzzahlen
BooleanRepräsentiert eine logische Entität und kann zwei Werte haben: true und false
clearIntervalBricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setInterval() eingerichtet wurde
clearTimeoutBricht eine zeitgesteuerte, wiederholte Aktion ab, die zuvor durch einen Aufruf von setTimeout() eingerichtet wurde
consoleBietet Zugriff auf die Debugging-Konsole des Browsers
DataViewRepräsentiert eine generische Ansicht eines ArrayBuffer
DateRepräsentiert einen einzelnen Zeitpunkt in einem plattformunabhängigen Format
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
DOMExceptionRepräsentiert einen Fehler, 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
ErrorRepräsentiert einen Fehler beim Versuch, eine Anweisung auszuführen oder auf eine Eigenschaft zuzugreifen
EvalErrorRepräsentiert einen Fehler, der in Bezug auf die globale Funktion eval() auftritt
Float32ArrayRepräsentiert ein typisiertes Array von 32-Bit Fließkommazahlen
Float64ArrayRepräsentiert ein typisiertes Array von 64-Bit Fließkommazahlen
FunctionRepräsentiert eine Funktion
InfinityRepräsentiert den mathematischen Wert Unendlich
Int8ArrayRepräsentiert ein typisiertes Array von 8-Bit vorzeichenbehafteten Ganzzahlen
Int16ArrayRepräsentiert ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzzahlen
Int32ArrayRepräsentiert ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzzahlen
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 zurück
MapRepräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf
MathBietet Zugriff auf mathematische Funktionen und Konstanten
NumberRepräsentiert einen numerischen Wert
ObjectRepräsentiert das Objekt, 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
PromiseRepräsentiert den eventuellen Abschluss (oder Fehler) einer asynchronen Operation und ihren resultierenden Wert
ProxyRepräsentiert ein Objekt, 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
RangeErrorRepräsentiert einen Fehler, wenn ein Wert nicht in der Menge oder dem Bereich der erlaubten Werte liegt
ReferenceErrorRepräsentiert einen Fehler, wenn auf eine nicht existierende Variable verwiesen wird
ReflectBietet Methoden für abfangbare JavaScript-Operationen
RegExpRepräsentiert einen regulären Ausdruck, der es ermöglicht, Zeichenkombinationen abzugleichen
SetRepräsentiert eine Sammlung von Werten, wobei jeder Wert nur einmal vorkommen darf
setIntervalRuft eine Funktion wiederholt mit einem festen Zeitabstand zwischen den Aufrufen auf
setTimeoutRuft eine Funktion auf oder wertet einen Ausdruck nach einer bestimmten Anzahl von Millisekunden aus
SharedArrayBufferRepräsentiert einen generischen, festlangen Rohdatenpuffer für binäre Daten
StringRepräsentiert eine Zeichenfolge
structuredCloneErstellt eine tiefe Kopie eines Werts
SymbolRepräsentiert einen eindeutigen und unveränderlichen Datentyp, der als Schlüssel einer Objekteigenschaft verwendet wird
SyntaxErrorRepräsentiert einen Fehler beim Versuch, syntaktisch ungültigen Code zu interpretieren
TypeErrorRepräsentiert einen Fehler, wenn ein Wert nicht vom erwarteten Typ ist
Uint8ArrayRepräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen
Uint8ClampedArrayRepräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzzahlen, die auf 0-255 begrenzt sind
Uint32ArrayRepräsentiert ein typisiertes Array von 32-Bit vorzeichenlosen Ganzzahlen
URIErrorRepräsentiert einen Fehler, wenn eine globale URI-Behandlungsfunktion falsch verwendet wurde
URLRepräsentiert ein Objekt, das statische Methoden zum Erstellen von Objekt-URLs bereitstellt
URLPatternRepräsentiert ein URL-Muster
URLSearchParamsRepräsentiert eine Sammlung von Schlüssel/Wert-Paaren
WeakMapRepräsentiert eine Sammlung von Schlüssel/Wert-Paaren, bei denen die Schlüssel schwach referenziert werden
WeakSetRepräsentiert eine Sammlung von Objekten, bei denen 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.
  • Die direkte Verwendung von require ist nicht erlaubt. Verwenden Sie stattdessen ES Modules.

Die folgenden JavaScript-Sprachfeatures sind deaktiviert und funktionieren nicht:

APIBeschreibung
evalWertet als String dargestellten JavaScript-Code aus
new Function(evalString)Erstellt eine neue Funktion mit dem als Argument übergebenen 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: Wenn diese Anweisungen auf dem Edge ausgeführt werden, werden sie einen Fehler verursachen und zu einem Laufzeitfehler führen.