Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : Découvrir node.js

Node.js : Variable d’environnement, fichier .env et dotenv

Temps de lecture estimé : 14 minutes
Accueil Javascript Node.js : Variable d’environnement, fichier .env et dotenv

Il arrive un moment, quand on commence à créer des applications Node.js, où l’on se rend compte que certaines informations ne devraient jamais traîner en clair dans le code. Une clé API, un mot de passe de base de données, un token privé que l’on protège… Tout cela mérite un endroit discret et sécurisé. C’est justement ici que les variables d’environnement entrent en scène. Et vous verrez qu’avec un fichier .env et la bibliothèque dotenv, tout devient étonnamment simple.

  • Comprendre comment utiliser un fichier .env et dotenv pour protéger vos informations sensibles et rendre votre application plus fiable.
  • Savoir structurer vos variables d’environnement pour adapter facilement votre projet aux différents contextes de développement, de test ou de production.
  • Adopter les bonnes pratiques permettant de garder un projet clair, professionnel et simple à maintenir, même lorsque sa configuration devient plus complexe.

Lorsque l’on débute, cette notion peut sembler un peu abstraite. On se demande où vont ces variables d’environnement, qui les lit, comment le programme les récupère, et surtout ce que cela change dans notre manière de développer. Pourtant, comprendre ce mécanisme est une étape clé si vous souhaitez aller plus loin dans la création d’applications robustes, faciles à déployer et respectueuses des bonnes pratiques.

Dans ce chapitre, vous allez découvrir pas à pas comment fonctionnent une variable d’environnement avec Node.js, pourquoi le fichier .env est indispensable, comment utiliser dotenv, et comment éviter plusieurs erreurs courantes que tous les développeurs débutants rencontrent un jour ou l’autre.

Comprendre ce qu’est une variable d’environnement

Avant de toucher au fichier .env ou à dotenv, il faut comprendre ce que signifie « variable d’environnement ». Une variable d’environnement est une petite information enregistrée en dehors de votre code, mais que votre application peut lire lorsqu’elle en a besoin. Elle n’est pas stockée dans vos fichiers JavaScript, mais directement dans l’environnement où s’exécute Node.js.

Dit autrement, c’est comme si vous laissiez un petit post-it près de l’ordinateur, et que votre application allait le consulter pour récupérer des données sensibles ou modifiables. Cette méthode permet d’éviter de graver dans le code des informations qui ne devraient pas être visibles publiquement.

Dans la vie d’un développeur, c’est un peu comme séparer la recette de cuisine de sa touche secrète. La recette est visible, mais l’ingrédient rare reste dans votre tiroir personnel.

Pourquoi ne pas mettre les informations sensibles directement dans le code

Lorsque l’on débute en JavaScript, on écrit volontiers quelque chose comme :

const dbPassword = "mySuperSecretPassword";

Cela fonctionne, c’est vrai. Mais si quelqu’un met la main sur votre fichier, si votre dépôt Git est public, ou si vous envoyez le code sur un serveur sans précautions, tout devient visible. Votre mot de passe se promène alors librement. Et autant dire que c’est une mauvaise idée, même pour un simple projet personnel.

Une variable d’environnement évite ce problème. Vous n’avez plus besoin d’exposer vos informations sensibles dans vos fichiers JavaScript. Votre code devient plus propre, plus sécurisé, et surtout plus simple à transporter d’un environnement à l’autre, que ce soit votre ordinateur, une machine de test ou un serveur en ligne.

Premier contact avec process.env en Node.js

Node.js met déjà à votre disposition un objet spécial : process.env. Il contient toutes les variables d’environnement de votre système. Vous pouvez l’utiliser sans rien installer.

Essayez ce petit exemple :

console.log(process.env);

Si vous exécutez ce code avec Node.js, vous verrez une longue liste de variables déjà présentes, créées par votre système d’exploitation ou par d’autres programmes.

Vous pouvez aussi définir une variable manuellement avant de lancer un script, par exemple sous macOS ou Linux :

PORT=3000 node app.js

Et dans votre app.js :

console.log(process.env.PORT);

Vous verrez alors le chiffre 3000 s’afficher. C’est la preuve que Node.js sait lire les variables d’environnement sans artifices.

Mais vous allez vite rencontrer un souci si vous tentez de gérer plusieurs variables de cette manière. Les définir à chaque lancement devient vite pénible. Et c’est ici que le fichier .env devient un outil magique.

Le rôle du fichier .env

Un fichier .env est tout simplement un petit fichier texte placé à la racine de votre projet. Il contient des lignes de la forme :

DB_HOST=localhost
DB_USER=admin
DB_PASSWORD=CeciEstUnMotDePasse
API_KEY=azerty123

Chaque ligne représente une variable d’environnement. C’est simple, lisible, modifiable sans effort, et surtout jamais destiné à être partagé publiquement.

La convention veut qu’on le nomme exactement .env. Cela dit, ce fichier n’est jamais envoyé sur GitHub, car on l’ajoute systématiquement dans le .gitignore. C’est une des premières habitudes à prendre afin d’éviter qu’un secret ne se retrouve en ligne.

Installer dotenv pour charger automatiquement le fichier .env

Node.js ne lit pas les fichiers .env tout seul. C’est là que la bibliothèque dotenv intervient. Elle se charge de lire le fichier .env et d’ajouter toutes les variables dans process.env, comme si vous les aviez définies manuellement avant de lancer votre script.

L’installation avec NPM est très simple :

npm install dotenv

Ensuite, dans votre fichier principal, souvent app.js ou server.js, vous ajoutez :

require('dotenv').config();

Et voilà. Toutes vos variables définies dans .env deviennent accessibles via process.env. Par exemple :

console.log(process.env.DB_PASSWORD);

Cela affichera votre mot de passe stocké dans le fichier .env.

Où placer le fichier .env dans votre projet

La règle est simple : toujours à la racine du projet, au même niveau que votre package.json. Si vous le placez dans un sous-dossier, dotenv ne le trouvera pas, sauf si vous lui indiquez un chemin personnalisé, ce qui n’est généralement pas nécessaire pour les débutants.

Charger dotenv correctement dans un projet Node.js

Même si l’ajout de la ligne require('dotenv').config() peut sembler anodin, il est important de comprendre ce qu’elle fait réellement. Dès que Node.js exécute votre fichier, dotenv lit votre fichier .env, récupère chaque variable et la place dans process.env. Cela veut dire que tout ce qui se trouve dans .env devient immédiatement disponible pour le reste du programme.

Par habitude, de nombreux développeurs placent cette ligne tout en haut de leur fichier principal. Cela permet de s’assurer que toutes les variables d’environnement sont chargées avant que votre application ne tente de les utiliser. Vous pouvez très bien l’écrire autrement, mais si vous êtes débutant, cette méthode simple fonctionne parfaitement.

Vous pourriez aussi avoir envie de charger dotenv dans un fichier séparé, comme une configuration globale. C’est une approche courante dans les projets professionnels ou structurés en MVC. Cependant, pour un premier projet, il vaut mieux rester sur un schéma clair : un require('dotenv').config() placé dans le fichier qui démarre l’application.

L’idée est d’installer une bonne pratique dès maintenant, afin de ne jamais oublier de charger vos variables d’environnement avant utilisation.

Tester rapidement que dotenv fonctionne

Une fois dotenv installé et configuré, vous pouvez créer un fichier .env à la racine de votre projet et y écrire quelque chose comme :

MESSAGE_BIENVENUE=Bonjour tout le monde

Ensuite, dans votre app.js :

require('dotenv').config();
console.log(process.env.MESSAGE_BIENVENUE);

Lorsque vous lancez votre application avec node app.js, vous devriez voir s’afficher votre message. Si rien ne s’affiche ou si vous voyez undefined, cela signifie que Node.js ne trouve pas le fichier .env. Dans ce cas, vérifiez que :

  • Votre fichier s’appelle bien .env et non pas env.txt ou .env.example.
  • Il se trouve bien à la racine du projet.
  • Vous avez relancé votre script après l’avoir créé.

Ces petites erreurs simples arrivent souvent au début, et elles sont parfaitement normales.

Les variables d’environnement ne sont que du texte

Un point que beaucoup de débutants oublient : toutes les valeurs dans un fichier .env sont des chaînes de caractères, quel que soit ce que vous y écrivez. Si vous écrivez PORT=3000, Node.js va lire la valeur « 3000 » et non pas le nombre 3000.

Cela signifie que si vous utilisez cette valeur dans un endroit qui demande un nombre, vous devrez peut-être la convertir avec parseInt() ou Number().

const port = Number(process.env.PORT);

C’est une bonne habitude à prendre pour éviter les comportements inattendus, notamment lorsqu’un serveur Express s’attend à obtenir un nombre pour démarrer.

Exemple concret avec Express

Pour mieux comprendre, mettons en place un petit serveur Express qui utilise un .env pour gérer son port. Créez un fichier .env :

PORT=4000

Puis écrivez ce code dans un fichier server.js :

require('dotenv').config();
const express = require('express');
const app = express();

const port = Number(process.env.PORT);

app.get('/', (req, res) => {
  res.send('Bienvenue sur votre serveur Express');
});

app.listen(port, () => {
  console.log('Serveur démarré sur le port', port);
});

Lorsque vous exécutez node server.js, votre serveur démarre, et il utilise la valeur contenue dans votre fichier .env. Si vous changez la valeur de PORT dans le fichier .env, vous pouvez changer le port d’écoute sans modifier une seule ligne du code JavaScript. C’est tout l’intérêt de séparer la configuration du code.

En savoir plus sur Les ports en informatique.

Cette logique est essentielle quand votre application commence à prendre de l’ampleur. Vous ne voulez pas avoir à fouiller dans vos fichiers pour retrouver toutes les variables à modifier en fonction de l’environnement dans lequel vous travaillez.

Adapter facilement son projet selon l’environnement

Dans le monde professionnel, un projet ne s’exécute jamais de la même manière selon qu’il est en développement local, en phase de test ou en production. Chacun de ces environnements peut avoir sa propre configuration, ses propres clés API, ses propres chemins d’accès, et parfois même des restrictions de sécurité différentes.

Par exemple, vous pourriez utiliser une base de données locale avec Node.js pour vos tests, mais une base beaucoup plus robuste pour la production. Pour éviter de réécrire sans arrêt les mêmes variables, on utilise souvent plusieurs fichiers .env.

Certains développeurs utilisent des fichiers nommés .env.development, .env.test et .env.production. Vous pouvez ensuite configurer dotenv pour charger l’un ou l’autre en fonction du contexte.

require('dotenv').config({
  path: './.env.development'
});

Cette approche n’est pas obligatoire, mais elle devient vite utile dans les projets de grande taille.

Attention à la sécurité en production

Il est crucial de comprendre que le fichier .env n’est pas un coffre-fort. Il s’agit d’un simple fichier texte. Il est utile, pratique, mais pas inviolable. Si quelqu’un a accès à votre serveur, il pourra l’ouvrir comme n’importe quel fichier.

L’objectif d’un .env est d’éviter que vos secrets ne se retrouvent dans votre code source ou dans un dépôt public. C’est une très bonne couche de sécurité, mais elle n’empêche pas un accès direct au serveur.

Dans un contexte professionnel, on utilise parfois des outils plus avancés, comme HashiCorp Vault, AWS Secrets Manager ou d’autres systèmes de gestion de secrets. Ce sont des solutions conçues pour protéger véritablement les données sensibles.

Mais pour débuter, un fichier .env accompagné de dotenv est largement suffisant.

Une erreur fréquente : commiter le .env sur GitHub

Il y a une erreur tellement courante que l’on pourrait presque la considérer comme un rite initiatique. Tout nouveau développeur, au moins une fois dans sa vie, a envoyé un fichier .env sur un dépôt GitHub public. Et cela arrive rapidement si vous oubliez d’ajouter ce fichier dans votre .gitignore.

Avec un .env qui contient vos mots de passe, vos clés API ou votre configuration de base de données, cela peut causer de gros dégâts. Certains services détectent ces fuites et désactivent automatiquement les clés qui apparaissent publiquement. D’autres vous enverront un e-mail d’avertissement.

Pour éviter cela, créez dès le début un .gitignore contenant simplement :

.env

Cela suffit à empêcher Git de suivre votre fichier. Vous pouvez également ajouter des variantes comme .env.local, si vous utilisez plusieurs environnements.

Organiser proprement ses variables d’environnement

Au fil du temps, votre fichier .env peut devenir assez long. Plus vous ajoutez de services, d’API, d’options de configuration et de paramètres pour vos bases de données, plus il devient difficile de s’y retrouver. Il est donc important d’adopter un minimum d’organisation.

Même si un fichier .env n’est, techniquement, qu’une liste de variables, vous pouvez améliorer profondément sa lisibilité en regroupant les sections qui concernent des éléments similaires. Par exemple, placer les informations sur la base de données les unes sous les autres, puis laisser une ligne vide avant de commencer les variables liées à un service externe. Bien sûr, cela n’a pas de valeur technique, mais la lisibilité d’un projet joue un rôle essentiel, surtout lorsque l’on revient dessus plusieurs mois plus tard.

Par habitude, de nombreux développeurs écrivent leurs variables entièrement en majuscules, un peu comme des constantes. Cela permet de les repérer rapidement dans le code et de maintenir une cohérence globale. Vous êtes libre de suivre cette convention ou d’en inventer une autre. L’essentiel est de rester constant au sein d’un même projet.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Gérer les valeurs par défaut : une bonne pratique souvent oubliée

Il arrive qu’une variable d’environnement n’existe pas dans le fichier .env. Cela peut paraître étrange, mais c’est une situation tout à fait courante, notamment lorsque vous travaillez sur un projet collaboratif ou lorsque vous préparez le déploiement de votre application.

Pour éviter que votre application ne plante lorsque process.env renvoie undefined, vous pouvez prévoir une valeur par défaut. En JavaScript, cela revient à écrire quelque chose comme :

const mode = process.env.MODE || "development";

Ici, si la variable MODE n’existe pas, votre application utilisera automatiquement « development ». Cette astuce, très simple, permet d’éviter des comportements imprévisibles et rend votre code plus robuste.

Vous pouvez aussi définir une valeur par défaut en utilisant la déstructuration, ce qui rend parfois le code plus lisible :

const { PORT = 3000 } = process.env;

Dans ce cas, si PORT n’existe pas, la valeur 3000 sera utilisée.

Cette stratégie est particulièrement utile lorsque vous partagez votre projet avec d’autres personnes. Elles n’ont pas à deviner toutes les variables obligatoires pour faire tourner l’application, car chaque valeur essentielle a un comportement de secours.

Utiliser dotenv avec d’autres fichiers de configuration

Dans les projets un peu plus avancés, il n’est pas rare de voir un fichier config.js qui centralise toute la configuration du projet. C’est un endroit où l’on récupère toutes les variables d’environnement dont l’application a besoin. Cela évite de parcourir le code à la recherche de process.env disséminés partout. Voici un exemple simple :

require('dotenv').config();

module.exports = {
  port: Number(process.env.PORT) || 3000,
  database: {
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD
  }
};

Ensuite, dans vos autres fichiers, vous pouvez simplement écrire :

const config = require('./config');

Cette méthode rend vos fichiers plus propres, limite les répétitions, et offre une vue d’ensemble très utile lorsque l’on souhaite comprendre rapidement comment fonctionne l’application.

Exemple concret avec MongoDB

Supposons que vous utilisiez MongoDB pour stocker vos données. Vous pouvez garder votre URI dans une variable d’environnement :

Dans votre fichier .env :

MONGO_URI=mongodb://localhost:27017/maBase

Puis dans un fichier database.js :

require('dotenv').config();
const mongoose = require('mongoose');

mongoose.connect(process.env.MONGO_URI)
  .then(() => console.log("Connexion à MongoDB réussie"))
  .catch((err) => console.log("Erreur MongoDB :", err));

Lorsque vous lancez votre application, dotenv charge MONGO_URI, et mongoose utilise cette valeur pour se connecter à votre base.

L’avantage est que vous pouvez changer d’environnement très facilement. Par exemple, en production, vous utiliserez une URI totalement différente, peut-être fournie par un service comme Atlas. Vous n’aurez qu’à modifier votre fichier .env, sans toucher la logique de votre code.

Exemple concret avec MySQL

Si vous utilisez MySQL, vous pouvez procéder de la même manière. Dans votre fichier .env :

MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=secret
MYSQL_DATABASE=maBase

Puis dans un fichier de connexion :

require('dotenv').config();
const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: process.env.MYSQL_HOST,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE
});

connection.connect((err) => {
  if (err) {
    console.log("Erreur MySQL :", err);
    return;
  }
  console.log("Connexion MySQL réussie");
});

Une fois encore, l’intérêt est de pouvoir modifier ces valeurs indépendamment du code, ce qui simplifie énormément la gestion des environnements.

Les différences entre une base de données SQL et NoSQL.

Les erreurs les plus fréquentes avec dotenv

Même si dotenv est simple, il existe plusieurs pièges dans lesquels tombent souvent les débutants. L’une des erreurs les plus courantes est d’écrire un espace autour du signe égal. Par exemple :

API_KEY = azerty123

Cela semble innocent, mais dotenv va considérer que la variable s’appelle « API_KEY  » avec un espace final. Vous vous retrouverez donc avec une variable introuvable dans votre code.

Veillez toujours à écrire vos lignes sous la forme clé=valeur, sans espaces inutiles.

Un autre problème fréquent est l’utilisation de guillemets dans les fichiers .env. Vous pouvez en mettre, mais il faut rester prudent. Par exemple, écrire :

TEXTE="Bonjour à tous"

Cela fonctionne parfaitement. En revanche, si vous mélangez des guillemets simples et doubles dans des contextes complexes, vous pourriez obtenir des comportements inattendus.

Enfin, certains développeurs oublient que dotenv ne recharge pas automatiquement les variables si vous modifiez le fichier .env pendant que l’application tourne. Pour prendre en compte les changements, vous devez relancer Node.js. C’est normal, mais cela surprend souvent lorsqu’on modifie fréquemment son fichier de configuration.

Construire un petit projet complet utilisant dotenv

Pour rassembler toutes les notions que nous avons vues, créons une petite structure de projet. Imaginez un serveur Node.js simple, capable d’afficher un message personnalisé en fonction de variables définies dans un fichier .env.

Vous pourriez créer un fichier .env contenant :

PORT=5000
MESSAGE_ACCUEIL=Bienvenue sur mon super serveur Node.js

Un fichier config.js pour centraliser la configuration :

require('dotenv').config();

module.exports = {
  port: Number(process.env.PORT),
  message: process.env.MESSAGE_ACCUEIL
};

Et un fichier server.js :

const express = require('express');
const config = require('./config');
const app = express();

app.get('/', (req, res) => {
  res.send(config.message);
});

app.listen(config.port, () => {
  console.log("Serveur lancé sur le port", config.port);
});

Ce petit projet illustre parfaitement la philosophie du fichier .env : séparer la configuration du code, améliorer la lisibilité et rendre votre application plus flexible.

Lorsque vous déploierez ce serveur sur un autre ordinateur, il suffira de modifier les valeurs de votre fichier .env. Votre code, lui, restera exactement le même.

Gérer proprement plusieurs environnements : développement, test et production

Lorsque votre application commence à grandir, vous réalisez vite qu’un seul fichier .env ne suffit plus. Selon que vous soyez en train de développer, de tester votre application ou de la déployer en production, vous n’utilisez jamais les mêmes services, les mêmes clés API ou les mêmes accès à la base de données. D’où l’intérêt de séparer vos environnements pour éviter les mauvaises surprises.

Il est par exemple fréquent qu’en développement, vous utilisiez une base de données locale. Elle est pratique, flexible, et surtout, elle vous évite de manipuler des données sensibles en travaillant sur votre machine. En revanche, lorsque l’application passe en production, elle doit se connecter à une base distante, proposée par un service comme Render, Clever Cloud, OVH ou MongoDB Atlas.

Pour organiser cela proprement, vous pouvez créer plusieurs fichiers .env, chacun portant le nom de l’environnement auquel il correspond. Il n’existe aucune règle stricte, mais la plupart du temps, on adopte des noms du type :

  • .env.development
  • .env.test
  • .env.production

Ensuite, vous pouvez indiquer à dotenv quel fichier charger. Par exemple :

require('dotenv').config({
  path: process.env.NODE_ENV === 'production' ? './.env.production' : './.env.development'
});

Ici, c’est la valeur de NODE_ENV qui décide quel fichier lire. En production, vous chargez .env.production. Sinon, votre application se base sur .env.development.

Cette approche vous évite d’utiliser accidentellement une clé de production en local ou de briser la base de données avec des tests. Elle vous permet aussi de rendre votre application plus fiable dès que vous commencez à la déployer sur un vrai serveur.

Les limites de dotenv : ce qu’il faut connaître

dotenv est un outil très pratique, mais il a aussi des limites importantes qu’il faut connaître si vous souhaitez évoluer vers des projets plus poussés.

La première limite est que dotenv ne protège pas réellement vos données. Ce n’est qu’un fichier texte, lisible par quiconque a accès au serveur. Son utilité est surtout d’isoler les secrets de votre code source, pas de les chiffrer. Dès qu’un projet contient des informations très sensibles, il vaut mieux envisager des outils spécialisés pour gérer les secrets.

Autre limite, dotenv ne recharge pas les variables dynamiquement. Si vous modifiez votre fichier .env, vous devez relancer l’application. Ce n’est généralement pas un problème, mais certains débutants s’attendent à ce que les changements soient pris en compte immédiatement.

Enfin, dotenv fonctionne surtout dans les environnements Node.js. Certaines plateformes de déploiement n’utilisent pas de fichiers .env, mais demandent plutôt de définir les variables directement via leur interface. Dans ce cas, vous n’avez même pas besoin d’utiliser dotenv, puisque c’est le système lui-même qui se charge de fournir les valeurs.

Intégrer dotenv dans une architecture MVC

Lorsque votre projet Node.js commence à évoluer, vous finissez souvent par structurer votre code avec une architecture MVC (Modèle-Vue-Contrôleur) ou une organisation similaire. Dans ce genre de structure, il peut être tentant d’appeler process.env dans tous les fichiers. Cela fonctionne, mais ce n’est pas toujours idéal.

Une bonne pratique consiste à centraliser toutes les variables d’environnement dans un fichier config.js ou config/index.js. Cela vous évite de répéter la même logique partout, et vous permet de garder une trace claire des variables réellement utilisées dans votre application.

Par exemple config/index.js :

require('dotenv').config();

module.exports = {
  app: {
    port: Number(process.env.PORT) || 3000,
    env: process.env.NODE_ENV || "development"
  },
  database: {
    uri: process.env.MONGO_URI
  },
  api: {
    stripeKey: process.env.STRIPE_KEY,
    mailSecret: process.env.MAIL_SECRET
  }
};

Dans un contrôleur, vous pouvez alors importer simplement :

const config = require('../config');

Cette manière de faire vous permet de garder vos fichiers plus lisibles, surtout lorsque l’application gagne en complexité. Vous savez exactement où se trouvent vos variables, comment elles sont organisées et comment les modifier sans parcourir toute l’arborescence du projet.

Bonnes pratiques professionnelles avec un fichier .env

Même si un .env semble trivial, il existe plusieurs bonnes pratiques qui vous aideront à gagner en fiabilité.

La première consiste à toujours créer un fichier nommé .env.example. Ce fichier ne contient pas les valeurs sensibles, mais uniquement les noms des variables dont votre application a besoin. Par exemple :

PORT=
DB_HOST=
DB_USER=
DB_PASSWORD=
API_KEY=

Ce fichier peut être ajouté sur GitHub, contrairement au vrai .env, et il permet à n’importe quel collaborateur de comprendre comment remplir son propre fichier .env local.

Une autre bonne habitude est de supprimer toutes les variables inutilisées. Dans les projets qui s’étalent sur plusieurs mois, on se retrouve souvent avec des variables obsolètes, laissées par d’anciens tests. Elles encombrent le fichier et peuvent prêter à confusion. Un nettoyage régulier vous aide à garder une vision claire du fonctionnement du projet.

Enfin, si vous envoyez votre application sur un hébergement, vous ne devez jamais copier-collez directement votre .env sur le serveur, surtout s’il s’agit d’un environnement sensible. Il vaut mieux définir les variables via des outils dédiés ou des interfaces prévues pour cela. Cela évite qu’un fichier envoyé par erreur se retrouve à traîner quelque part sur la machine.

Un ami développeur m’a raconté un jour qu’il avait perdu une après-midi entière à chercher pourquoi son application refusait d’accéder à une base PostgreSQL en ligne. Il vérifiait le code, redémarrait le serveur, pensait même que le problème venait du fournisseur. Après trois heures de recherches, il a remarqué que sa variable POSTGRES_PASSWORD n’était pas dans son .env, mais dans un autre fichier nommé .env.bak, qu’il avait créé « temporairement ». Depuis, il garde son fichier .env aussi clair et minimaliste que possible, pour éviter ce type de pièges. Comme quoi, même les développeurs expérimentés peuvent se faire surprendre.

Une petite habitude qui change votre manière de développer

Les variables d’environnement, les fichiers .env et l’usage de dotenv peuvent paraître secondaires lorsque l’on débute. Pourtant, ils transforment profondément votre manière d’organiser vos projets. Lorsque vous séparez clairement le code de la configuration, vous gagnez en clarté, en flexibilité et en sécurité. Vous pouvez déplacer votre application d’une machine à une autre sans modifier la moindre ligne de JavaScript, simplement en ajustant les valeurs de votre fichier .env.

Avec le temps, vous réaliserez qu’utiliser dotenv devient un réflexe, presque une routine rassurante. Vous lancez un nouveau projet, vous créez votre fichier .env, vous définissez vos premières variables, et vous démarrez sur des bases propres. Une petite habitude qui paraît anodine, mais qui vous évite bien des erreurs et vous prépare naturellement aux exigences du développement professionnel.

Et si un jour vous évoluez vers des solutions plus avancées pour la gestion des secrets, vous aurez déjà acquis les bons réflexes. Pour l’instant, maîtriser les fichiers .env et dotenv vous ouvre les portes d’un développement plus propre, mieux organisé et beaucoup plus agréable au quotidien.