SEO Brief — обзор поиска и SEO

ESM ломает сборку не сам по себе — обычно ломает смешанный граф импортов

ESM ломает сборку не сам по себе — обычно ломает смешанный граф импортов

Если в репе есть CommonJS, ESM и “на всякий случай” `default`-импорты, проблемы почти всегда в границах модулей. Типовые симптомы: `Cannot use import statement outside a module`, странные `undefined` при импорте и плавающие ошибки в тестах.

Проверьте базовый набор:
— `package.json`: где реально нужен `"type": "module"`, а где лучше оставить CJS
— расширения файлов: `.js` в ESM ведёт себя не так, как многие ждут
— импорты: `import x from` и `import * as x from` не взаимозаменяемы
— `tsconfig`: `module`, `moduleResolution`, `paths` должны совпадать с рантаймом

Отдельно смотрите на три ловушки: импорт JSON, `__dirname`/`__filename` и package exports. Если код собирается в Vite, а запускается в Node, один и тот же импорт может работать по-разному. Это не баг, это разный резолв.

Самый дешёвый способ не тонуть — сначала зафиксировать одну модель для репы: либо ESM везде, либо чёткая граница с CJS. Потом уже подключать биомы, тесты и монорепу; иначе вы будете лечить не код, а несовместимость модулей.
Этот пост опубликован в Telegram-канале SEO Brief — обзор поиска и SEO. Подписаться можно по ссылке: @seo_brief_lab.
growth

Свежие посты в категории «Growth & Funnel»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.