Fix: guard typeof process en supabase.ts para no romper hidratación

Sin este guard el bundle de browser (islands que importan browserClient)
evalúa process.env al importar el módulo y revienta con ReferenceError,
tumbando la hidratación de PerfilForm y MaterialForm. En producción esto
provocaba que los botones "Guardar" hicieran submit nativo del <form>
sin action, cayendo en /login en vez de disparar el endpoint.

El orden process → import.meta.env se mantiene para el server (necesario
por el fix de Docker que no expone .env.production durante docker build).

Bitácora: primera ronda de QA manual con agent-browser post v1.6.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-08-26 07:35:32 -07:00
parent fe1ef7b70d
commit 3e576426e1
2 changed files with 20 additions and 3 deletions
+7 -3
View File
@@ -4,9 +4,13 @@ import type { AstroCookies } from 'astro';
const SCHEMA = 'prestamos';
const SUPABASE_URL = process.env.PUBLIC_SUPABASE_URL ?? import.meta.env.PUBLIC_SUPABASE_URL;
const SUPABASE_ANON_KEY = process.env.PUBLIC_SUPABASE_ANON_KEY ?? import.meta.env.PUBLIC_SUPABASE_ANON_KEY;
const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY ?? import.meta.env.SUPABASE_SERVICE_ROLE_KEY;
// `process` no existe en el bundle de browser (islands con client:load que
// importan browserClient) — hay que checar typeof antes de leerlo o revienta
// la hidratación con "process is not defined" en vez de caer al fallback.
const hasProcess = typeof process !== 'undefined';
const SUPABASE_URL = (hasProcess ? process.env.PUBLIC_SUPABASE_URL : undefined) ?? import.meta.env.PUBLIC_SUPABASE_URL;
const SUPABASE_ANON_KEY = (hasProcess ? process.env.PUBLIC_SUPABASE_ANON_KEY : undefined) ?? import.meta.env.PUBLIC_SUPABASE_ANON_KEY;
const SUPABASE_SERVICE_KEY = (hasProcess ? process.env.SUPABASE_SERVICE_ROLE_KEY : undefined) ?? import.meta.env.SUPABASE_SERVICE_ROLE_KEY;
// ponytail: solo para preview local sin login. Bypass RLS con service_role.
// Su uso queda tras un flag de DEV en el middleware.