- Hinzufügen von Typinformationen zu den ausgegebenen Umgebungsvariablen zur besseren Nachverfolgbarkeit. - Implementierung einer speziellen Prüfung für das Datenbankpasswort, einschließlich Länge, ersten und letzten drei Zeichen sowie Überprüfung auf Leerzeichen, Zeilenumbrüche und Tabs. - Verbesserung der Konsolenausgaben zur Überwachung der Umgebungsvariablen beim Serverstart.
75 lines
3.0 KiB
JavaScript
75 lines
3.0 KiB
JavaScript
// Centralized environment loader
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
import dotenv from 'dotenv';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
console.log('🔍 [loadEnv] Starte Umgebungsvariablen-Loader...');
|
|
console.log('🔍 [loadEnv] Aktuelles Verzeichnis:', process.cwd());
|
|
console.log('🔍 [loadEnv] __dirname:', __dirname);
|
|
|
|
// Resolve backend/.env regardless of cwd
|
|
const envPath = path.resolve(__dirname, '../.env');
|
|
console.log('🔍 [loadEnv] .env Pfad:', envPath);
|
|
|
|
// Prüfe ob .env-Datei existiert
|
|
import fs from 'fs';
|
|
if (fs.existsSync(envPath)) {
|
|
console.log('✅ [loadEnv] .env-Datei gefunden');
|
|
|
|
// Datei-Inhalt prüfen (ohne Passwörter)
|
|
const envContent = fs.readFileSync(envPath, 'utf8');
|
|
const envLines = envContent.split('\n').filter(line => line.trim() && !line.startsWith('#'));
|
|
console.log('📄 [loadEnv] .env-Datei enthält', envLines.length, 'Variablen');
|
|
|
|
// Zeige Variablen-Namen (ohne Werte)
|
|
envLines.forEach(line => {
|
|
const [key] = line.split('=');
|
|
if (key) {
|
|
console.log(' 📋', key.trim());
|
|
}
|
|
});
|
|
} else {
|
|
console.log('❌ [loadEnv] .env-Datei nicht gefunden!');
|
|
}
|
|
|
|
// Lade .env-Datei
|
|
const result = dotenv.config({ path: envPath });
|
|
if (result.error) {
|
|
console.error('❌ [loadEnv] Fehler beim Laden der .env-Datei:', result.error.message);
|
|
} else {
|
|
console.log('✅ [loadEnv] .env-Datei erfolgreich geladen');
|
|
|
|
// Prüfe wichtige Umgebungsvariablen
|
|
console.log('🔍 [loadEnv] Wichtige Umgebungsvariablen:');
|
|
console.log(' DB_HOST:', process.env.DB_HOST, '(', typeof process.env.DB_HOST, ')');
|
|
console.log(' DB_USER:', process.env.DB_USER, '(', typeof process.env.DB_USER, ')');
|
|
console.log(' DB_PASS:', process.env.DB_PASS ? '***' : 'undefined', '(', typeof process.env.DB_PASS, ')');
|
|
console.log(' DB_NAME:', process.env.DB_NAME, '(', typeof process.env.DB_NAME, ')');
|
|
console.log(' DB_PORT:', process.env.DB_PORT, '(', typeof process.env.DB_PORT, ')');
|
|
console.log(' NODE_ENV:', process.env.NODE_ENV, '(', typeof process.env.NODE_ENV, ')');
|
|
console.log(' PORT:', process.env.PORT, '(', typeof process.env.PORT, ')');
|
|
|
|
// Spezielle Passwort-Prüfung
|
|
if (process.env.DB_PASS) {
|
|
console.log('🔍 [loadEnv] DB_PASS Details:');
|
|
console.log(' Länge:', process.env.DB_PASS.length);
|
|
console.log(' Erste 3 Zeichen:', process.env.DB_PASS.substring(0, 3));
|
|
console.log(' Letzte 3 Zeichen:', process.env.DB_PASS.substring(process.env.DB_PASS.length - 3));
|
|
console.log(' Enthält Leerzeichen:', process.env.DB_PASS.includes(' '));
|
|
console.log(' Enthält Zeilenumbrüche:', process.env.DB_PASS.includes('\n'));
|
|
console.log(' Enthält Tabs:', process.env.DB_PASS.includes('\t'));
|
|
}
|
|
|
|
if (!process.env.SECRET_KEY) {
|
|
console.warn('⚠️ [loadEnv] SECRET_KEY nicht gesetzt in .env');
|
|
} else {
|
|
console.log('✅ [loadEnv] SECRET_KEY ist gesetzt');
|
|
}
|
|
}
|
|
|
|
console.log('🔍 [loadEnv] Umgebungsvariablen-Loader abgeschlossen');
|
|
export {};
|