Runtime Edge
Next.js propose deux runtimes serveur que vous pouvez utiliser dans votre application :
- Le Runtime Node.js (par défaut), qui a accès à toutes les API Node.js et est utilisé pour le rendu de votre application.
- Le Runtime Edge qui contient un ensemble plus limité d'API, utilisé dans les Middleware.
Limitations
- Le Runtime Edge ne prend pas en charge toutes les API Node.js. Certains packages peuvent ne pas fonctionner comme prévu.
- Le Runtime Edge ne prend pas en charge la Régénération Statique Incrémentale (ISR).
- Les deux runtimes peuvent prendre en charge le streaming selon l'adaptateur de déploiement utilisé.
Référence
Le Runtime Edge prend en charge les API suivantes :
API Réseau
API | Description |
---|---|
Blob | Représente un blob |
fetch | Récupère une ressource |
FetchEvent | Représente un événement de fetch |
File | Représente un fichier |
FormData | Représente des données de formulaire |
Headers | Représente des en-têtes HTTP |
Request | Représente une requête HTTP |
Response | Représente une réponse HTTP |
URLSearchParams | Représente des paramètres URL |
WebSocket | Représente une connexion websocket |
API d'Encodage
API | Description |
---|---|
atob | Décode une chaîne encodée en base-64 |
btoa | Encode une chaîne en base-64 |
TextDecoder | Décode un Uint8Array en chaîne |
TextDecoderStream | Décodeur chaînable pour les flux |
TextEncoder | Encode une chaîne en Uint8Array |
TextEncoderStream | Encodeur chaînable pour les flux |
API de Flux
API | Description |
---|---|
ReadableStream | Représente un flux lisible |
ReadableStreamBYOBReader | Représente un lecteur de ReadableStream |
ReadableStreamDefaultReader | Représente un lecteur de ReadableStream |
TransformStream | Représente un flux de transformation |
WritableStream | Représente un flux inscriptible |
WritableStreamDefaultWriter | Représente un écrivain de WritableStream |
API Cryptographiques
API | Description |
---|---|
crypto | Fournit un accès aux fonctionnalités cryptographiques de la plateforme |
CryptoKey | Représente une clé cryptographique |
SubtleCrypto | Fournit un accès aux primitives cryptographiques courantes comme le hachage, la signature, le chiffrement ou le déchiffrement |
API Web Standards
API | Description |
---|---|
AbortController | Permet d'annuler une ou plusieurs requêtes DOM à volonté |
Array | Représente un tableau de valeurs |
ArrayBuffer | Représente un tampon de données binaires brutes générique de longueur fixe |
Atomics | Fournit des opérations atomiques sous forme de méthodes statiques |
BigInt | Représente un nombre entier avec une précision arbitraire |
BigInt64Array | Représente un tableau typé d'entiers signés sur 64 bits |
BigUint64Array | Représente un tableau typé d'entiers non signés sur 64 bits |
Boolean | Représente une entité logique et peut avoir deux valeurs : true et false |
clearInterval | Annule une action répétitive programmée précédemment établie par un appel à setInterval() |
clearTimeout | Annule une action programmée précédemment établie par un appel à setTimeout() |
console | Fournit un accès à la console de débogage du navigateur |
DataView | Représente une vue générique d'un ArrayBuffer |
Date | Représente un moment unique dans un format indépendant de la plateforme |
decodeURI | Décode un identifiant de ressource uniforme (URI) précédemment créé par encodeURI ou par une routine similaire |
decodeURIComponent | Décode un composant d'identifiant de ressource uniforme (URI) précédemment créé par encodeURIComponent ou par une routine similaire |
DOMException | Représente une erreur survenant dans le DOM |
encodeURI | Encode un identifiant de ressource uniforme (URI) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère |
encodeURIComponent | Encode un composant d'identifiant de ressource uniforme (URI) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère |
Error | Représente une erreur lors de l'exécution d'une instruction ou de l'accès à une propriété |
EvalError | Représente une erreur liée à la fonction globale eval() |
Float32Array | Représente un tableau typé de nombres à virgule flottante sur 32 bits |
Float64Array | Représente un tableau typé de nombres à virgule flottante sur 64 bits |
Function | Représente une fonction |
Infinity | Représente la valeur mathématique Infini |
Int8Array | Représente un tableau typé d'entiers signés sur 8 bits |
Int16Array | Représente un tableau typé d'entiers signés sur 16 bits |
Int32Array | Représente un tableau typé d'entiers signés sur 32 bits |
Intl | Fournit un accès aux fonctionnalités d'internationalisation et de localisation |
isFinite | Détermine si une valeur est un nombre fini |
isNaN | Détermine si une valeur est NaN ou non |
JSON | Fournit des fonctionnalités pour convertir des valeurs JavaScript vers et depuis le format JSON |
Map | Représente une collection de valeurs, où chaque valeur ne peut apparaître qu'une seule fois |
Math | Fournit un accès aux fonctions et constantes mathématiques |
Number | Représente une valeur numérique |
Object | Représente l'objet qui est la base de tous les objets JavaScript |
parseFloat | Analyse un argument de chaîne et renvoie un nombre à virgule flottante |
parseInt | Analyse un argument de chaîne et renvoie un entier de la base spécifiée |
Promise | Représente l'achèvement (ou l'échec) éventuel d'une opération asynchrone, et sa valeur résultante |
Proxy | Représente un objet utilisé pour définir un comportement personnalisé pour des opérations fondamentales (par exemple, recherche de propriété, affectation, énumération, invocation de fonction, etc) |
queueMicrotask | Met en file d'attente une microtâche à exécuter |
RangeError | Représente une erreur lorsqu'une valeur n'est pas dans l'ensemble ou la plage de valeurs autorisées |
ReferenceError | Représente une erreur lorsqu'une variable inexistante est référencée |
Reflect | Fournit des méthodes pour des opérations JavaScript interceptables |
RegExp | Représente une expression régulière, permettant de faire correspondre des combinaisons de caractères |
Set | Représente une collection de valeurs, où chaque valeur ne peut apparaître qu'une seule fois |
setInterval | Appelle une fonction de manière répétée, avec un délai fixe entre chaque appel |
setTimeout | Appelle une fonction ou évalue une expression après un nombre spécifié de millisecondes |
SharedArrayBuffer | Représente un tampon de données binaires brutes générique de longueur fixe |
String | Représente une séquence de caractères |
structuredClone | Crée une copie profonde d'une valeur |
Symbol | Représente un type de données unique et immuable utilisé comme clé d'une propriété d'objet |
SyntaxError | Représente une erreur lors de la tentative d'interprétation d'un code syntaxiquement invalide |
TypeError | Représente une erreur lorsqu'une valeur n'est pas du type attendu |
Uint8Array | Représente un tableau typé d'entiers non signés sur 8 bits |
Uint8ClampedArray | Représente un tableau typé d'entiers non signés sur 8 bits limités à 0-255 |
Uint32Array | Représente un tableau typé d'entiers non signés sur 32 bits |
URIError | Représente une erreur lorsqu'une fonction globale de gestion d'URI est utilisée de manière incorrecte |
URL | Représente un objet fournissant des méthodes statiques utilisées pour créer des URL d'objet |
URLPattern | Représente un modèle d'URL |
URLSearchParams | Représente une collection de paires clé/valeur |
WeakMap | Représente une collection de paires clé/valeur dans laquelle les clés sont référencées faiblement |
WeakSet | Représente une collection d'objets dans laquelle chaque objet ne peut apparaître qu'une seule fois |
WebAssembly | Fournit un accès à WebAssembly |
Polyfills spécifiques à Next.js
Variables d'environnement
Vous pouvez utiliser process.env
pour accéder aux Variables d'environnement à la fois pour next dev
et next build
.
APIs non prises en charge
Le Runtime Edge comporte certaines restrictions, notamment :
- Les APIs natives de Node.js ne sont pas prises en charge. Par exemple, vous ne pouvez pas lire ou écrire dans le système de fichiers.
- Les
node_modules
peuvent être utilisés, à condition qu'ils implémentent les ES Modules et n'utilisent pas d'APIs natives de Node.js. - L'appel direct à
require
est interdit. Utilisez plutôt les ES Modules.
Les fonctionnalités suivantes du langage JavaScript sont désactivées et ne fonctionneront pas :
API | Description |
---|---|
eval | Évalue du code JavaScript représenté sous forme de chaîne de caractères |
new Function(evalString) | Crée une nouvelle fonction avec le code fourni en argument |
WebAssembly.compile | Compile un module WebAssembly à partir d'une source buffer |
WebAssembly.instantiate | Compile et instancie un module WebAssembly à partir d'une source buffer |
Dans de rares cas, votre code pourrait contenir (ou importer) des instructions d'évaluation dynamique de code qui ne peuvent pas être atteintes à l'exécution et qui ne peuvent pas être supprimées par l'élagage d'arbre (treeshaking). Vous pouvez assouplir la vérification pour autoriser des fichiers spécifiques dans votre configuration de Middleware :
unstable_allowDynamic
est un glob, ou un tableau de globs, qui ignore l'évaluation dynamique de code pour des fichiers spécifiques. Les globs sont relatifs au dossier racine de votre application.
Attention : si ces instructions sont exécutées sur le Edge, elles généreront une erreur et provoqueront une erreur d'exécution.