Skip to content

Commit 00aa4f5

Browse files
committed
fix: ensure environment variables load correctly in dev workflow
- Fix Next.js client env var bundling with t3-oss/env-nextjs v0.7.3 - Use experimental__runtimeEnv API for client vars - Client vars must be explicitly listed for Next.js static analysis - Fixes "Invalid environment variables" error in web app - Ensure .bin/bun wrapper is used in dev script - Explicitly add PROJECT_ROOT/.bin to PATH in scripts/dev.sh - Ensures .bin/bun wrapper loads Infisical environment variables - Fixes issue where direnv hooks don't run in subshells
1 parent 06c48b3 commit 00aa4f5

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

packages/internal/src/env.ts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,30 @@ if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'prod') {
77
console.log('Using environment:', process.env.NEXT_PUBLIC_CB_ENVIRONMENT)
88
}
99

10-
type ServerEnvKey = keyof typeof serverEnvSchema
11-
type ClientEnvKey = keyof typeof clientEnvSchema
12-
13-
const runtimeEnv = Object.fromEntries([
14-
...Object.keys(serverEnvSchema).map((key) => [key, process.env[key]]),
15-
...Object.keys(clientEnvSchema).map((key) => [key, process.env[key]]),
16-
]) as Record<ServerEnvKey | ClientEnvKey, string | undefined>
10+
// Client env vars MUST be explicitly listed for Next.js to inline them
11+
const clientRuntimeEnv = {
12+
NEXT_PUBLIC_CB_ENVIRONMENT: process.env.NEXT_PUBLIC_CB_ENVIRONMENT,
13+
NEXT_PUBLIC_CODEBUFF_APP_URL: process.env.NEXT_PUBLIC_CODEBUFF_APP_URL,
14+
NEXT_PUBLIC_CODEBUFF_BACKEND_URL:
15+
process.env.NEXT_PUBLIC_CODEBUFF_BACKEND_URL,
16+
NEXT_PUBLIC_SUPPORT_EMAIL: process.env.NEXT_PUBLIC_SUPPORT_EMAIL,
17+
NEXT_PUBLIC_POSTHOG_API_KEY: process.env.NEXT_PUBLIC_POSTHOG_API_KEY,
18+
NEXT_PUBLIC_POSTHOG_HOST_URL: process.env.NEXT_PUBLIC_POSTHOG_HOST_URL,
19+
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:
20+
process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,
21+
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL:
22+
process.env.NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL,
23+
NEXT_PUBLIC_LINKEDIN_PARTNER_ID: process.env.NEXT_PUBLIC_LINKEDIN_PARTNER_ID,
24+
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID:
25+
process.env.NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID,
26+
NEXT_PUBLIC_WEB_PORT: process.env.NEXT_PUBLIC_WEB_PORT,
27+
}
1728

1829
const envSchema = {
1930
server: serverEnvSchema,
2031
client: clientEnvSchema,
21-
runtimeEnv,
32+
// Only expose NEXT_PUBLIC_* values here; server secrets stay in process.env.
33+
experimental__runtimeEnv: clientRuntimeEnv,
2234
}
2335
let envTemp
2436
try {

scripts/dev.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
#!/bin/bash
22

3+
# Get the project root directory
4+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
6+
7+
# Ensure .bin/bun is in PATH first so environment variables are loaded
8+
export PATH="$PROJECT_ROOT/.bin:$PATH"
9+
310
# Enable job control and set up trap for cleanup
411
set -m
512
READY_FILE="/tmp/codebuff_server_ready_$$"

0 commit comments

Comments
 (0)