// TIJDELIJKE debug-pagina om te checken of env-vars op deze deployment // daadwerkelijk een (juiste) waarde hebben. Geen secrets gelekt — alleen // metadata: lengte, hostname en pooled-flag voor DB-URLs. // // VERWIJDEREN zodra env-config op Vercel bevestigd is. import { headers } from 'next/headers' import { notFound } from 'next/navigation' export const dynamic = 'force-dynamic' export const runtime = 'nodejs' interface VarStatus { name: string set: boolean length: number host?: string pooled?: boolean parseError?: string } function inspectUrl(name: string, raw: string | undefined): VarStatus { if (!raw) return { name, set: false, length: 0 } try { const url = new URL(raw) return { name, set: true, length: raw.length, host: url.hostname, pooled: url.hostname.includes('pooler.'), } } catch (e) { return { name, set: true, length: raw.length, parseError: e instanceof Error ? e.message : String(e), } } } function inspectSecret(name: string, raw: string | undefined): VarStatus { if (!raw) return { name, set: false, length: 0 } return { name, set: true, length: raw.length } } export default async function DebugEnvPage() { // Productie-guard: lekt env-var-metadata (hostnames, lengtes, pooled-flag). if (process.env.NODE_ENV === 'production') notFound() // Force dynamic so each visit reads runtime env (niet build-time gecached) await headers() const vars: VarStatus[] = [ inspectUrl('DATABASE_URL', process.env.DATABASE_URL), inspectUrl('DIRECT_URL', process.env.DIRECT_URL), inspectSecret('SESSION_SECRET', process.env.SESSION_SECRET), ] const node = process.env.NODE_ENV ?? '(unset)' const vercel = process.env.VERCEL_ENV ?? '(unset)' const url = process.env.VERCEL_URL ?? '(unset)' const region = process.env.VERCEL_REGION ?? '(unset)' return (
Server-side gerenderd. Toont alleen metadata, geen waardes. Verwijderen na env-config check.
| NODE_ENV | {node} |
| VERCEL_ENV | {vercel} |
| VERCEL_URL | {url} |
| VERCEL_REGION | {region} |
| name | set | length | host | pooled | parse_error |
|---|---|---|---|---|---|
| {v.name} | {v.set ? 'yes' : 'NO'} | {v.length} | {v.host ?? '—'} | {v.pooled === undefined ? '—' : v.pooled ? 'yes (LISTEN may not work)' : 'no'} | {v.parseError ?? '—'} |