Compare commits

..
Author SHA1 Message Date
devops 7a09202c27 fix: forzar ISR en /product/[slug] para que no quede atascado en datos mock del build
generateStaticParams usa el catálogo mock en build time porque
HEADLESS_PROVIDER y MEDUSA_* no existen como build args del Dockerfile.
Sin un revalidate explícito, esa ruta queda estática para siempre con
price:null. El listado no sufre esto porque su ruta es dinámica por
searchParams.
2026-08-12 22:56:03 -05:00
2 changed files with 7 additions and 10 deletions
@@ -25,16 +25,6 @@ module.exports = defineConfig({
jwtSecret: required("JWT_SECRET"),
cookieSecret: required("COOKIE_SECRET"),
},
// Todos los Ingress del lab terminan en Traefik por HTTP plano
// (entrypoint "web", sin TLS); Cloudflare es quien atiende HTTPS de
// cara al navegador. Con `secure: true` (el default en producción),
// express-session nunca emite Set-Cookie porque no detecta la
// conexión como HTTPS, y el dashboard admin queda con 401 en
// /admin/users/me pese a loguear bien. La API con Bearer token no se
// ve afectada por esto.
cookieOptions: {
secure: false,
},
},
admin: {
@@ -9,6 +9,13 @@ import { getProductBySlug, getProducts } from "@/lib/headless/client";
interface ProductPageProps { params: Promise<{ slug: string }> }
// Sin esto, la página queda estática para siempre con los datos del build
// (que usa el catálogo mock porque HEADLESS_PROVIDER/MEDUSA_* no existen en
// el contexto del Docker build). El listado sí se refresca porque su ruta
// es dinámica por searchParams; esta ruta necesita el revalidate explícito
// para que el runtime (que sí tiene las env vars de Medusa) la regenere.
export const revalidate = 60;
export async function generateStaticParams() {
const products = await getProducts();
return products.map((product) => ({ slug: product.slug }));