Skip to content

Commit

Permalink
Load environment variables in deno SSR (#3483)
Browse files Browse the repository at this point in the history
* Properly shim env in Deno

* Add test for loading env vars in Deno

* Add changeset
  • Loading branch information
mvolfik authored May 31, 2022
1 parent 1aeb1d0 commit b795a08
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/chilly-sheep-doubt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@astrojs/deno': patch
---

Deno integration now loads environment variables in server runtime
2 changes: 1 addition & 1 deletion packages/integrations/deno/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"build": "astro-scripts build \"src/**/*.ts\" && tsc",
"build:ci": "astro-scripts build \"src/**/*.ts\"",
"dev": "astro-scripts dev \"src/**/*.ts\"",
"test": "deno test --allow-run --allow-read --allow-net ./test/"
"test": "deno test --allow-run --allow-read --allow-env --allow-net ./test/"
},
"devDependencies": {
"astro": "workspace:*",
Expand Down
3 changes: 2 additions & 1 deletion packages/integrations/deno/src/shim.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(globalThis as any).process = {
argv: [],
env: {},
// @ts-ignore
env: Deno.env.toObject(),
};
20 changes: 20 additions & 0 deletions packages/integrations/deno/test/basics.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ async function startApp(cb) {
await runBuildAndStartApp('./fixtures/basics/', cb);
}

// this needs to be here and not in the specific test case, because
// the variables are loaded in the global scope of the built server
// module, which is only executed once upon the first load
const varContent = 'this is a value stored in env variable';
Deno.env.set('SOME_VARIABLE', varContent);

Deno.test({
name: 'Basics',
async fn() {
Expand Down Expand Up @@ -39,3 +45,17 @@ Deno.test({
});
},
});

Deno.test({
name: 'Correctly loads run-time env variables',
async fn() {
await startApp(async () => {
const resp = await fetch('http://127.0.0.1:8085/');
const html = await resp.text();

const doc = new DOMParser().parseFromString(html, `text/html`);
const p = doc.querySelector('p#env-value');
assertEquals(p.innerText, varContent);
});
},
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
import ReactComponent from '../components/React.jsx';
const envValue = import.meta.env.SOME_VARIABLE;
---
<html>
<head>
Expand All @@ -8,6 +9,7 @@ import ReactComponent from '../components/React.jsx';
</head>
<body>
<h1>Basic App on Deno</h1>
<p id="env-value">{envValue}</p>
<ReactComponent />
</body>
</html>

0 comments on commit b795a08

Please sign in to comment.