// 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' 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() { // 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 (

Env-var debug

Server-side gerenderd. Toont alleen metadata, geen waardes. Verwijderen na env-config check.

Runtime

NODE_ENV{node}
VERCEL_ENV{vercel}
VERCEL_URL{url}
VERCEL_REGION{region}

Variables

{vars.map((v) => ( ))}
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 ?? '—'}
) }