summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/cloudflare/src')
-rw-r--r--packages/integrations/cloudflare/src/server.advanced.ts7
-rw-r--r--packages/integrations/cloudflare/src/server.directory.ts7
-rw-r--r--packages/integrations/cloudflare/src/shim.ts4
-rw-r--r--packages/integrations/cloudflare/src/util.ts16
4 files changed, 26 insertions, 8 deletions
diff --git a/packages/integrations/cloudflare/src/server.advanced.ts b/packages/integrations/cloudflare/src/server.advanced.ts
index ac040c9b2..cb83dd994 100644
--- a/packages/integrations/cloudflare/src/server.advanced.ts
+++ b/packages/integrations/cloudflare/src/server.advanced.ts
@@ -1,7 +1,8 @@
-import './shim.js';
-
import type { SSRManifest } from 'astro';
import { App } from 'astro/app';
+import { getProcessEnvProxy } from './util.js';
+
+process.env = getProcessEnvProxy();
type Env = {
ASSETS: { fetch: (req: Request) => Promise<Response> };
@@ -12,6 +13,8 @@ export function createExports(manifest: SSRManifest) {
const app = new App(manifest, false);
const fetch = async (request: Request, env: Env, context: any) => {
+ process.env = env as any;
+
const { origin, pathname } = new URL(request.url);
// static assets
diff --git a/packages/integrations/cloudflare/src/server.directory.ts b/packages/integrations/cloudflare/src/server.directory.ts
index e7463b84c..321f37e18 100644
--- a/packages/integrations/cloudflare/src/server.directory.ts
+++ b/packages/integrations/cloudflare/src/server.directory.ts
@@ -1,7 +1,8 @@
-import './shim.js';
-
import type { SSRManifest } from 'astro';
import { App } from 'astro/app';
+import { getProcessEnvProxy } from './util.js';
+
+process.env = getProcessEnvProxy();
export function createExports(manifest: SSRManifest) {
const app = new App(manifest, false);
@@ -14,6 +15,8 @@ export function createExports(manifest: SSRManifest) {
request: Request;
next: (request: Request) => void;
} & Record<string, unknown>) => {
+ process.env = runtimeEnv.env as any;
+
const { origin, pathname } = new URL(request.url);
// static assets
if (manifest.assets.has(pathname)) {
diff --git a/packages/integrations/cloudflare/src/shim.ts b/packages/integrations/cloudflare/src/shim.ts
deleted file mode 100644
index 1a4a6ee9b..000000000
--- a/packages/integrations/cloudflare/src/shim.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-(globalThis as any).process = {
- argv: [],
- env: {},
-};
diff --git a/packages/integrations/cloudflare/src/util.ts b/packages/integrations/cloudflare/src/util.ts
new file mode 100644
index 000000000..a44780863
--- /dev/null
+++ b/packages/integrations/cloudflare/src/util.ts
@@ -0,0 +1,16 @@
+export function getProcessEnvProxy() {
+ return new Proxy(
+ {},
+ {
+ get: (target, prop) => {
+ console.warn(
+ // NOTE: \0 prevents Vite replacement
+ `Unable to access \`import.meta\0.env.${prop.toString()}\` on initialization ` +
+ `as the Cloudflare platform only provides the environment variables per request. ` +
+ `Please move the environment variable access inside a function ` +
+ `that's only called after a request has been received.`
+ );
+ },
+ }
+ );
+}