import { existsSync } from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' /** * Prisma 7 liest die .env nicht mehr von selbst, und Seed und Tests laufen * ausserhalb von Next.js. Im Betrieb kommen die Werte aus dem .env-Reiter von * Dockge und stehen längst in der Umgebung, dann passiert hier nichts. * * Bereits gesetzte Variablen werden **nicht** überschrieben. `process.loadEnvFile` * tut das von sich aus, und das ist an dieser Stelle falsch: eine .env ist ein * Rückfall für die lokale Entwicklung, kein Vorrang vor dem, was der Aufrufer * ausdrücklich mitgegeben hat. Sonst überschreibt sie zum Beispiel die APP_URL * eines Testlaufs, und die Fehlersuche führt weit weg von der Ursache. */ export function loadEnvFromRepoRoot(): void { const here = path.dirname(fileURLToPath(import.meta.url)) const candidates = [ path.resolve(here, '../../../.env'), path.resolve(here, '../../.env'), path.resolve(process.cwd(), '.env'), ] const file = candidates.find((candidate) => existsSync(candidate)) if (!file) return const before = new Map(Object.entries(process.env)) process.loadEnvFile(file) for (const [key, value] of before) { if (value !== undefined) process.env[key] = value } }