mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-30 21:01:54 +08:00
Fix dashboard build crash: preserve empty/sentinel passthrough in inline env resolver
resolveInlineRenamedEnvVar collapsed empty-string and unreplaced-sentinel values to `undefined` via its `|| ... || undefined` tail. The pre-rename inline (`process.env.HEXCLAVE ?? process.env.STACK`) returned the raw value, so an unset NEXT_PUBLIC_* var (which Next inlines as "") came through as "" and downstream `getPublicEnvVar(...) ?? throwErr(...)` readers were satisfied. Returning `undefined` instead made those `?? throwErr` checks fire during `next build` page-data collection (e.g. the AI companion widget's NEXT_PUBLIC_BROWSER_STACK_API_URL read), crashing the dashboard build in the check-prisma-migrations job (which builds the dashboard via the CLI's rde-standalone bundle). Restore the `??` passthrough for the raw fallback so empty/sentinel values are preserved, while keeping conflict detection and the empty-as-unset shadowing protection (a real STACK value is still returned over an empty HEXCLAVE one). Verified: dashboard `next build` collects page data without throwing.
This commit is contained in:
parent
b270c0f2ef
commit
9ad92b9e4e
@ -22,7 +22,13 @@ function resolveInlineRenamedEnvVar(hexclaveName: string, stackName: string, hex
|
||||
) {
|
||||
throw new Error(`Environment variables ${hexclaveName} and ${stackName} are both set to different values. Remove one of them or set them to the same value.`);
|
||||
}
|
||||
return usableHexclaveValue || usableStackValue || hexclaveValue || stackValue || undefined;
|
||||
// Prefer a real (non-sentinel) Hexclave value, then a real Stack value. When
|
||||
// neither is "real", fall back to the raw value with `??` so an empty-string
|
||||
// placeholder or an unreplaced sentinel is passed through unchanged (matching
|
||||
// the pre-rename `process.env.X ?? process.env.Y` inline behavior) instead of
|
||||
// collapsing to `undefined` — downstream readers use `?? throwErr(...)`, which
|
||||
// treats `undefined` (but not `""`) as "missing" and would crash the build.
|
||||
return usableHexclaveValue || usableStackValue || (hexclaveValue ?? stackValue);
|
||||
}
|
||||
|
||||
// Hexclave rebrand: each entry prefers the NEXT_PUBLIC_HEXCLAVE_* literal, falling back
|
||||
|
||||
Loading…
Reference in New Issue
Block a user