Variables d'environnement Next.js expliquées

Variables d'environnement Next.js

Variables d'environnement Next.js : .env, NEXT_PUBLIC_ | We.Inc

Comment Next.js charge les fichiers .env, dans quel ordre, ce que fait réellement NEXT_PUBLIC_ au moment du build et comment lire les valeurs à l'exécution. Collez votre .env pour voir ce qui atteint le navigateur.

Next.js lit les fichiers .env à la racine du projet et les place dans process.env. Les variables sont réservées au serveur par défaut. Préfixez un nom par NEXT_PUBLIC_ et Next.js copie sa valeur dans le JavaScript du navigateur pendant next build : elle devient publique et figée jusqu'au prochain build. Ne mettez jamais un secret derrière ce préfixe.

Ordre de chargement : le premier fichier qui définit une variable l'emporte

Collez ci-dessous le contenu d'un fichier .env. Le vérificateur classe chaque variable en réservée au serveur ou envoyée au navigateur, et signale les noms publics qui ressemblent à des secrets. Tout s'exécute sur cette page ; rien de ce que vous collez n'est envoyé.

Questions fréquentes

Pourquoi ma variable d'environnement vaut-elle undefined dans le navigateur ?

Sans le préfixe NEXT_PUBLIC_, une variable n'existe que sur le serveur, et Next.js la remplace par une chaîne vide dans le code client. Ajoutez le préfixe uniquement si la valeur peut être publiée sans risque, puis relancez le build.

J'ai modifié une valeur NEXT_PUBLIC_ chez mon hébergeur et rien ne s'est passé. Pourquoi ?

Les valeurs publiques sont intégrées quand next build s'exécute. Un bundle déployé garde l'ancienne valeur jusqu'à un nouveau build avec la nouvelle.

.env.local fonctionne-t-il dans les tests ?

Non. Quand NODE_ENV vaut test, Next.js ignore .env.local pour que chaque exécution de tests reçoive les mêmes valeurs. Placez les valeurs par défaut des tests dans .env.test et vos surcharges personnelles dans .env.test.local.

Une variable peut-elle en référencer une autre ?

Oui. Écrivez $OTHER_NAME dans une valeur et Next.js la développe. Si la valeur doit contenir un signe dollar littéral, échappez-le avec \$.

Quelle est la valeur de NODE_ENV ?

Si vous ne la définissez pas, next dev utilise development et les autres commandes utilisent production. Les valeurs autorisées sont production, development et test.

Ce que fait réellement NEXT_PUBLIC_

Lire les valeurs à l'exécution

Se prémunir contre les fuites

Lire les variables dans le code

Valeur réservée au serveur dans un Route Handler

DB_URL n'a pas de préfixe, elle n'existe donc que sur le serveur. Les Route Handlers et les Server Components peuvent la lire librement.

Valeur publique dans un Client Component

Le nom littéral complet est obligatoire. Au build, Next.js le remplace par la valeur, et le navigateur voit une simple chaîne.

Lire une valeur à chaque requête

Attendre connection() force le rendu dynamique de la page, si bien que la valeur vient du serveur en cours d'exécution plutôt que du build.

loadEnvConfig applique le même ordre de chargement, ce qui garde les scripts et les configurations de tests alignés sur l'app.

Vérificateur de .env

Collez vos lignes .env

Où chaque variable peut être lue

Variable

Disponible dans

Remarque

Serveur uniquement

Serveur et navigateur (intégrée au build)

Ce n'est pas une ligne de variable

Ce nom ressemble à un secret. Tout ce qui porte NEXT_PUBLIC_ est visible par chaque visiteur.

Référence {v}, que Next.js développe.

NODE_ENV n'accepte que production, development ou test.

Aucune variable trouvée pour l'instant.

{n} réservées au serveur, {v} envoyées au navigateur

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site