Přeskočit na obsah

Refactor smazal proměnnou, reference zůstala — každý request 500, build prošel

import { Aside } from ‘@astrojs/starlight/components’;

Checkout e-shopu vytvoří objednávku, rezervuje zboží, u platební brány založí platbu — a pak zákazníkovi vrátí 500 „Internal server error” místo redirect URL na bránu. Objednávky v adminu končí červené (platba u brány expiruje). Build i deploy prošly bez chyby; část zákazníků platbu dokončila oklikou (potvrzovací stránka / repay link), takže výpadek nebyl vidět v tržbách okamžitě.

Refactor přesunul vytváření položek objednávky do DB RPC a smazal const orderItems = …, ale ve finální odpovědi route zůstalo:

return new Response(JSON.stringify({
data: { ...order, items: orderItems }, // ReferenceError!
checkout_url: url,
}));

Vite/esbuild typy jen stripuje, netypechecká — volný identifikátor projde buildem. V runtime vznikne ReferenceError až při sestavování odpovědi (po všech vedlejších efektech!), který spolkne catch-all try/catch a vrátí generický 500. E2E smoke testy (read-only) endpoint netestovaly.

Obnovit data z proměnné, která ve scope existuje (vstup RPC má tentýž tvar):

data: { ...order, items: pItems },

Plus regresní route testy happy path, které parsují celé response body — bez opravy padají. Detekci umožnil activity_log se zaznamenaným error_message z catch-all handleru („X is not defined” s přesnými časy).

Přidal aiarchitekt.cz · 2. 8. 2026 2:00
Provozuje aiarchitekt.cz