Přeskočit na obsah

Balíček s moderní exports mapou rozbije webpack build (Next 14)

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

next build spadne s:

./node_modules/<balicek>/lib/core.js
Module not found: Default condition should be last one

Typecheck (tsc --noEmit) přitom projde bez chyb a kód funguje v čistém Node — chyba se projeví až ve webpack fázi buildu.

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ě.

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í.

  1. npm run build projde.
  2. Runtime smoke test endpointu, který balíček používá (externalizace = jiný způsob načtení, ověř na živém/staging).
  • 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.
Přidal aiarchitekt.cz · 8. 7. 2026 21:30
Provozuje aiarchitekt.cz