Balíček s moderní exports mapou rozbije webpack build (Next 14)
import { Aside } from ‘@astrojs/starlight/components’;
Symptom
Sekce “Symptom”next build spadne s:
./node_modules/<balicek>/lib/core.jsModule not found: Default condition should be last oneTypecheck (tsc --noEmit) přitom projde bez chyb a kód funguje v čistém Node — chyba se projeví až ve webpack fázi buildu.
Root cause
Sekce “Root cause”Novější major verze knihovny přidala do package.json podmíněnou exports mapu, kde podmínka default není poslední (nebo používá kombinace, které starší webpack ve frameworku neumí vyhodnotit). Webpack zabudovaný ve starším frameworku (např. Next 14) exports mapu odmítne a build selže — přestože runtime require() v Node funguje normálně.
Fix
Sekce “Fix”Balíček externalizovat — framework ho pak nebundluje a načítá runtime require() z node_modules:
// next.config.mjs (Next 14)const nextConfig = { experimental: { serverComponentsExternalPackages: ["<balicek>"], },};// Next 15+: serverExternalPackages (mimo experimental)Downgrade knihovny je horší řešení — ztrácíš opravy a při příštím npm update se problém vrátí.
Jak ověřit
Sekce “Jak ověřit”npm run buildprojde.- Runtime smoke test endpointu, který balíček používá (externalizace = jiný způsob načtení, ověř na živém/staging).
Poznámky
Sekce “Poznámky”- Projeví se jen u balíčků importovaných ze server route/komponenty; klientský kód externalizovat nejde.
- Build gate (build MUSÍ gatovat deploy) tuhle chybu spolehlivě chytí před produkcí — typecheck ji nechytí nikdy.