From d4a8ff261d5a9c24f071edb712865601ea030bba Mon Sep 17 00:00:00 2001 From: soufiane Date: Tue, 2 Dec 2025 17:41:15 +0100 Subject: [PATCH] fix: load environment-specific .env files based on NODE_ENV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - env.js now loads .env.production, .env.preprod, or .env.dev - Removes redundant dotenv.config() from email.service.js - Fixes SMTP config not loading in production/preprod 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/config/env.js | 25 ++++++++++++++++++++++++- src/services/email.service.js | 4 +--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/config/env.js b/src/config/env.js index 5c6af416..f25f67e6 100644 --- a/src/config/env.js +++ b/src/config/env.js @@ -3,8 +3,31 @@ * Ce fichier doit être importé en premier dans l'application */ import dotenv from 'dotenv'; +import path from 'path'; +import { fileURLToPath } from 'url'; -// Charger les variables d'environnement sans écraser celles fournies par Docker/système +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const rootDir = path.resolve(__dirname, '../..'); + +// Déterminer le fichier .env à charger selon NODE_ENV +const nodeEnv = process.env.NODE_ENV || 'development'; +let envFile = '.env'; + +if (nodeEnv === 'production') { + envFile = '.env.production'; +} else if (nodeEnv === 'preproduction') { + envFile = '.env.preprod'; +} else if (nodeEnv === 'development') { + envFile = '.env.dev'; +} + +// Charger d'abord le fichier spécifique à l'environnement +const envPath = path.join(rootDir, envFile); +console.log(`📁 Chargement config: ${envFile} (NODE_ENV=${nodeEnv})`); +dotenv.config({ path: envPath, override: false }); + +// Charger aussi .env comme fallback (sans écraser) dotenv.config({ override: false }); export default { diff --git a/src/services/email.service.js b/src/services/email.service.js index ccffad25..bb71f379 100644 --- a/src/services/email.service.js +++ b/src/services/email.service.js @@ -1,10 +1,8 @@ /** * Service d'envoi d'emails avec Nodemailer + * Note: Les variables d'environnement sont chargées par src/config/env.js */ import nodemailer from 'nodemailer'; -import dotenv from 'dotenv'; - -dotenv.config(); // Configuration du transporteur email (créé à la demande pour éviter les problèmes de chargement) let transporter = null;