React не определен при использовании rollup для связывания как esm

#javascript #reactjs #bundlin&-and-minification #rollupjs

#javascript #reactjs #объединение и минимизация #rollupjs

Вопрос:

Вместо того, чтобы иметь единый пакет для моего приложения rollup react в разработке, я разделил его на два пакета. Один для зависимостей и один для самого приложения.

Таким образом, режим просмотра остается быстрым (поскольку теперь ему не нужно непрерывно анализировать зависимости), и мне не нужно писать (или использовать сторонние) оболочки модуля es для библиотек, таких как React.

Хотя код объединен без каких-либо ошибок, я сталкиваюсь с TypeError: React is undefined во время его запуска. Когда я проверяю сетевую панель в инструментах разработчика, я вижу, что загружаются пакеты зависимостей.

Вот как я использую rollup с его API. Вы можете увидеть остальную часть соответствующего кода здесь.

Кто-нибудь может указать, что я делаю не так? Любая помощь приветствуется!

Комментарии:

1. Я не уверен, что вы можете проанализировать React cjs на esm , поскольку React уже создан как cjs . Вы можете проверить, просмотрев затем свой файл dep bundle.

2. @tmhao2005 Я имею в виду, что это отлично работает, когда я создаю единый пакет. Проблема, похоже, исходит из React DOM.

Ответ №1:

Это ошибка в последней @rollup/plu&in-commonjs версии (14.0.0). Это было исправлено при слиянии этого PR, но это еще не было выпущено в NPM. Я пошел и собрал последнюю версию с GitHub и использовал ее с соответствующим репозиторием, и React теперь работает.

Поэтому на данный момент решение заключается в использовании последнего исходного кода на GH до публикации следующей версии.