Fix cloudflare runtime env var handling (#7679)
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev>
This commit is contained in:
parent
d69fe3a8d2
commit
1a6f833c40
5 changed files with 24 additions and 2 deletions
5
.changeset/light-jars-cheat.md
Normal file
5
.changeset/light-jars-cheat.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'astro': patch
|
||||
---
|
||||
|
||||
Handle inlining non-string boolean environment variables
|
5
.changeset/spicy-pugs-wonder.md
Normal file
5
.changeset/spicy-pugs-wonder.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@astrojs/cloudflare': patch
|
||||
---
|
||||
|
||||
Fix runtime env var handling
|
|
@ -31,7 +31,11 @@ function getPrivateEnv(
|
|||
// Ignore public env var
|
||||
if (envPrefixes.every((prefix) => !key.startsWith(prefix))) {
|
||||
if (typeof process.env[key] !== 'undefined') {
|
||||
const value = process.env[key];
|
||||
let value = process.env[key];
|
||||
// Replacements are always strings, so try to convert to strings here first
|
||||
if (typeof value !== 'string') {
|
||||
value = `${value}`;
|
||||
}
|
||||
// Boolean values should be inlined to support `export const prerender`
|
||||
// We already know that these are NOT sensitive values, so inlining is safe
|
||||
if (value === '0' || value === '1' || value === 'true' || value === 'false') {
|
||||
|
|
|
@ -91,6 +91,14 @@ export default function createIntegration(args?: Options): AstroIntegration {
|
|||
}
|
||||
vite.ssr ||= {};
|
||||
vite.ssr.target = 'webworker';
|
||||
|
||||
// Cloudflare env is only available per request. This isn't feasible for code that access env vars
|
||||
// in a global way, so we shim their access as `process.env.*`. We will populate `process.env` later
|
||||
// in its fetch handler.
|
||||
vite.define = {
|
||||
'process.env': 'process.env',
|
||||
...vite.define,
|
||||
};
|
||||
}
|
||||
},
|
||||
'astro:build:ssr': ({ entryPoints }) => {
|
||||
|
|
|
@ -2,7 +2,7 @@ import { loadFixture, runCLI } from './test-utils.js';
|
|||
import { expect } from 'chai';
|
||||
import * as cheerio from 'cheerio';
|
||||
|
||||
describe.skip('Basic app', () => {
|
||||
describe('Basic app', () => {
|
||||
/** @type {import('./test-utils').Fixture} */
|
||||
let fixture;
|
||||
/** @type {import('./test-utils').WranglerCLI} */
|
||||
|
|
Loading…
Reference in a new issue