From 6fd5a8845dc74a4a99f24a53586a15f69d1fb3c3 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Tue, 1 Apr 2025 15:03:46 +0200 Subject: [PATCH] fix: process.env has a higher loading priority than .env files --- .changeset/modern-yaks-add.md | 5 +++++ examples/playground14/.env.development | 3 ++- examples/playground14/e2e/cloudflare.spec.ts | 5 +++++ examples/playground14/wrangler.jsonc | 3 ++- packages/cloudflare/src/cli/templates/worker.ts | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 .changeset/modern-yaks-add.md diff --git a/.changeset/modern-yaks-add.md b/.changeset/modern-yaks-add.md new file mode 100644 index 00000000..91cf192a --- /dev/null +++ b/.changeset/modern-yaks-add.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/cloudflare": patch +--- + +fix: process.env has a higher loading priority than .env files diff --git a/examples/playground14/.env.development b/examples/playground14/.env.development index 7eeb777a..561d7791 100644 --- a/examples/playground14/.env.development +++ b/examples/playground14/.env.development @@ -1 +1,2 @@ -TEST_ENV_VAR=TEST_VALUE \ No newline at end of file +TEST_ENV_VAR=TEST_VALUE +PROCESS_ENV_VAR=.ENV_FILE \ No newline at end of file diff --git a/examples/playground14/e2e/cloudflare.spec.ts b/examples/playground14/e2e/cloudflare.spec.ts index 2b669f99..d64b1efd 100644 --- a/examples/playground14/e2e/cloudflare.spec.ts +++ b/examples/playground14/e2e/cloudflare.spec.ts @@ -13,4 +13,9 @@ test.describe("playground/cloudflare", () => { const { nextConfig } = await res.json(); expect(nextConfig.output).toEqual("standalone"); }); + + test("Environment variable defined on process.env are not overridden by .env files", async ({ page }) => { + const res = await page.request.get("/api/env"); + await expect(res.json()).resolves.toEqual(expect.objectContaining({ PROCESS_ENV_VAR: "process.env" })); + }); }); diff --git a/examples/playground14/wrangler.jsonc b/examples/playground14/wrangler.jsonc index b1339759..43950850 100644 --- a/examples/playground14/wrangler.jsonc +++ b/examples/playground14/wrangler.jsonc @@ -15,6 +15,7 @@ } ], "vars": { - "hello": "Hello World from the cloudflare context!" + "hello": "Hello World from the cloudflare context!", + "PROCESS_ENV_VAR": "process.env" } } diff --git a/packages/cloudflare/src/cli/templates/worker.ts b/packages/cloudflare/src/cli/templates/worker.ts index 1c7e69a8..958f4715 100644 --- a/packages/cloudflare/src/cli/templates/worker.ts +++ b/packages/cloudflare/src/cli/templates/worker.ts @@ -78,7 +78,7 @@ function populateProcessEnv(url: URL, env: CloudflareEnv) { const mode = env.NEXTJS_ENV ?? "production"; if (nextEnvVars[mode]) { for (const key in nextEnvVars[mode]) { - process.env[key] = nextEnvVars[mode][key]; + process.env[key] ??= nextEnvVars[mode][key]; } }