From c66d77c03f6473e184a34f9de1a61a19ab799cf5 Mon Sep 17 00:00:00 2001 From: Petter Machado Date: Fri, 25 Oct 2024 09:43:13 +0200 Subject: [PATCH] fix: Early dotenv (#14) * fix: Early dotenv We need to call `dotenv.config()` before other files are imported to have the .env configuration take effect in NODE_ENV=production. * fix: Reorder imports --- lib/env.ts | 13 +++++++++++++ server.ts | 11 +---------- 2 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 lib/env.ts diff --git a/lib/env.ts b/lib/env.ts new file mode 100644 index 0000000..2045947 --- /dev/null +++ b/lib/env.ts @@ -0,0 +1,13 @@ +import dotenv from "dotenv"; +import { getLogger } from "./logger/index.js"; + +const logger = getLogger("lib/env"); +logger.info("Starting in NODE_ENV=" + process.env.NODE_ENV); + +// The dev server parses keys in non-production +if (process.env.NODE_ENV === "production") { + const config = dotenv.config(); + logger.info( + "Parsed .env file with keys: " + Object.keys(config.parsed ?? {}).join(","), + ); +} diff --git a/server.ts b/server.ts index 9f14d04..c95dbc4 100644 --- a/server.ts +++ b/server.ts @@ -1,7 +1,7 @@ +import "./lib/env.js"; import { createRequestHandler } from "@remix-run/express"; import type { ServerBuild } from "@remix-run/node"; import express from "express"; -import dotenv from "dotenv"; import pinoHttp from "pino-http"; import { sync } from "./lib/db/index.js"; @@ -10,15 +10,6 @@ import apiRouter from "./api/index.js"; import { getLogger } from "./lib/logger/index.js"; const logger = getLogger("server"); -logger.info("Starting in NODE_ENV=" + process.env.NODE_ENV); - -// The dev server parses keys in non-production -if (process.env.NODE_ENV === "production") { - const config = dotenv.config(); - logger.info( - "Parsed .env file with keys: " + Object.keys(config.parsed ?? {}).join(","), - ); -} const app = express(); if (process.env.REQUEST_LOG) {