Runtime Edge
Le Runtime Edge de Next.js est basé sur les API Web standards et 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 les paramètres de recherche d'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 instant précis 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 à 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 à 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 (comme la recherche de propriété, l'affectation, l'énumération, l'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 des valeurs autorisées |
ReferenceError | Représente une erreur lorsqu'une variable non existante 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 l'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 objets |
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
.
API non prises en charge
Le Runtime Edge a certaines restrictions, notamment :
- Les API 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'API natives de Node.js. - L'appel direct à
require
n'est pas autorisé. 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 comme 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 la configuration exportée de votre Middleware ou de votre Route API Edge :
export const config = {
runtime: 'edge', // pour les Routes API Edge uniquement
unstable_allowDynamic: [
// autorise un seul fichier
'/lib/utilities.js',
// utilise un glob pour autoriser tout dans le module tiers function-bind
'**/node_modules/function-bind/**',
],
}
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 lanceront une erreur et provoqueront une erreur d'exécution.