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

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 für ReadableStream
ReadableStreamDefaultReaderRepräsentiert einen Reader für ReadableStream
TransformStreamRepräsentiert einen Transform-Stream
WritableStreamRepräsentiert einen beschreibbaren Stream
WritableStreamDefaultWriterRepräsentiert einen Writer für 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 einer oder mehrerer 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 ganze Zahl mit beliebiger Präzision
BigInt64ArrayRepräsentiert ein typisiertes Array von 64-Bit vorzeichenbehafteten Ganzahlen
BigUint64ArrayRepräsentiert ein typisiertes Array von 64-Bit vorzeichenlosen Ganzahlen
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() 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
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 Ganzahlen
Int16ArrayRepräsentiert ein typisiertes Array von 16-Bit vorzeichenbehafteten Ganzahlen
Int32ArrayRepräsentiert ein typisiertes Array von 32-Bit vorzeichenbehafteten Ganzahlen
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
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 eventualen 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 etc.)
queueMicrotaskPlant die Ausführung eines Microtasks
RangeErrorRepräsentiert einen Fehler, wenn ein Wert nicht in der Menge oder im 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 auf, mit einer festen Zeitverzögerung zwischen jedem Aufruf
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 Ganzahlen
Uint8ClampedArrayRepräsentiert ein typisiertes Array von 8-Bit vorzeichenlosen Ganzahlen, die auf 0-255 begrenzt sind
Uint32ArrayRepräsentiert ein typisiertes Array von 32-Bit vorzeichenlosen Ganzahlen
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, in der die Schlüssel schwach referenziert sind
WeakSetRepräsentiert eine Sammlung von Objekten, 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 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:

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-Konfiguration zuzulassen:

middleware.ts
export const config = {
  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 auslösen und einen Laufzeitfehler verursachen.

On this page