From e2087ad7866d0fd857dff86cb892b16c30afac14 Mon Sep 17 00:00:00 2001 From: William Phetsinorath Date: Mon, 27 Apr 2026 15:39:13 +0200 Subject: [PATCH] fix: dotenv doesn't overload existing env var Signed-off-by: William Phetsinorath --- apps/server-nestjs/prisma.config.ts | 15 +++++++++++---- apps/server/prisma.config.ts | 15 +++++++++++---- apps/server/src/utils/env.ts | 20 ++++++++++++++------ 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/apps/server-nestjs/prisma.config.ts b/apps/server-nestjs/prisma.config.ts index f553c118b..ff5aaf918 100644 --- a/apps/server-nestjs/prisma.config.ts +++ b/apps/server-nestjs/prisma.config.ts @@ -1,12 +1,19 @@ import fs from 'node:fs' import path from 'node:path' +import { parseEnv } from 'node:util' import { defineConfig } from 'prisma/config' -if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) - process.loadEnvFile('.env.integ') +if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} -if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) - process.loadEnvFile('.env') +if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env.integ'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} export default defineConfig({ schema: path.join('src', 'prisma', 'schema'), diff --git a/apps/server/prisma.config.ts b/apps/server/prisma.config.ts index f553c118b..ff5aaf918 100644 --- a/apps/server/prisma.config.ts +++ b/apps/server/prisma.config.ts @@ -1,12 +1,19 @@ import fs from 'node:fs' import path from 'node:path' +import { parseEnv } from 'node:util' import { defineConfig } from 'prisma/config' -if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) - process.loadEnvFile('.env.integ') +if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} -if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) - process.loadEnvFile('.env') +if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env.integ'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} export default defineConfig({ schema: path.join('src', 'prisma', 'schema'), diff --git a/apps/server/src/utils/env.ts b/apps/server/src/utils/env.ts index cdaf870f7..2ca618fd1 100644 --- a/apps/server/src/utils/env.ts +++ b/apps/server/src/utils/env.ts @@ -1,10 +1,18 @@ import fs from 'node:fs' - -if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) - process.loadEnvFile('.env.integ') - -if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) - process.loadEnvFile('.env') +import path from 'node:path' +import { parseEnv } from 'node:util' + +if (process.env.DOCKER !== 'true' && fs.existsSync('.env')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} + +if (process.env.INTEGRATION === 'true' && fs.existsSync('.env.integ')) { + Object.assign(process.env, Object.fromEntries( + Object.entries(parseEnv(fs.readFileSync(path.resolve('.env.integ'), 'utf-8'))).filter(([_k, v]) => Boolean(v)), + )) +} // application mode export const isDev = process.env.NODE_ENV === 'development'