Verbessere die Handhabung des Ladens von .env-Dateien: Füge Lesbarkeitsprüfung für Produktions-.env hinzu und verbessere Fehlerbehandlung beim Laden.

This commit is contained in:
Torsten Schulz (local)
2026-02-14 16:22:22 +01:00
parent 91637ba7a3
commit 444a1b9dcc

View File

@@ -12,25 +12,51 @@ const productionEnvPath = '/opt/yourpart/backend/.env';
const localEnvPath = path.resolve(__dirname, '../.env');
let envPath = localEnvPath; // Fallback
let usingProduction = false;
if (fs.existsSync(productionEnvPath)) {
envPath = productionEnvPath;
console.log('[env] Lade Produktions-.env:', productionEnvPath);
// Prüfe Lesbarkeit bevor wir versuchen, sie zu laden
try {
fs.accessSync(productionEnvPath, fs.constants.R_OK);
envPath = productionEnvPath;
usingProduction = true;
console.log('[env] Produktions-.env gefunden und lesbar:', productionEnvPath);
} catch (err) {
console.warn('[env] Produktions-.env vorhanden, aber nicht lesbar - verwende lokale .env stattdessen:', productionEnvPath);
console.warn('[env] Fehler:', err && err.message);
envPath = localEnvPath;
}
} else {
console.log('[env] Lade lokale .env:', localEnvPath);
console.log('[env] Produktions-.env nicht gefunden, lade lokale .env:', localEnvPath);
}
// Lade .env-Datei
// Lade .env-Datei (robust gegen Fehler)
console.log('[env] Versuche .env zu laden von:', envPath);
console.log('[env] Datei existiert:', fs.existsSync(envPath));
console.log('[env] Datei lesbar:', fs.accessSync ? (() => { try { fs.accessSync(envPath, fs.constants.R_OK); return true; } catch { return false; } })() : 'unbekannt');
const result = dotenv.config({ path: envPath });
if (result.error) {
console.warn('[env] Konnte .env nicht laden:', result.error.message);
console.warn('[env] Fehler-Details:', result.error);
} else {
console.log('[env] .env erfolgreich geladen von:', envPath);
console.log('[env] Geladene Variablen:', Object.keys(result.parsed || {}));
let result;
try {
result = dotenv.config({ path: envPath });
if (result.error) {
console.warn('[env] Konnte .env nicht laden:', result.error.message);
console.warn('[env] Fehler-Details:', result.error);
} else {
console.log('[env] .env erfolgreich geladen von:', envPath, usingProduction ? '(production)' : '(local)');
console.log('[env] Geladene Variablen:', Object.keys(result.parsed || {}));
}
} catch (err) {
// Sollte nicht passieren, aber falls dotenv intern eine Exception wirft (z.B. EACCES), fange sie ab
console.warn('[env] Unerwarteter Fehler beim Laden der .env:', err && err.message);
console.warn('[env] Stack:', err && err.stack);
if (envPath !== localEnvPath && fs.existsSync(localEnvPath)) {
console.log('[env] Versuche stattdessen lokale .env:', localEnvPath);
try {
result = dotenv.config({ path: localEnvPath });
if (!result.error) {
console.log('[env] Lokale .env erfolgreich geladen von:', localEnvPath);
}
} catch (err2) {
console.warn('[env] Konnte lokale .env auch nicht laden:', err2 && err2.message);
}
}
}
// Debug: Zeige Redis-Konfiguration