Обновление: похожее, но более элегантное решение можно найти в репозитории rollup-starter-code-splitting.

Если вы разделяете код своего Javascript-приложения и динамически импортируете модули, вы можете выводить свои фрагменты в модулях ES6 для совместимых браузеров и предоставлять резервное решение (что-то вроде systemJS) для старых браузеров.

Если вы сделаете это, вы столкнетесь с проблемой браузеров, которые поддерживают модули ES6, но не поддерживают динамический импорт (например, Firefox 60).

Эти браузеры будут использовать теги ‹script type="module"› (и игнорировать ‹script nomodule›), но будут сбрасывать код при обнаружении import() вызов в середине вашего кода.

Я обратился за помощью в Вопросах объединения, и Гай Бедфорд пришел мне на помощь с этим решением, которое, я надеюсь, может избавить кого-то еще от головной боли:

Это отобразит ошибку в консоли в Firefox 60 (и других браузерах в той же ситуации), но должно быть прозрачно для пользователя.

Вы можете увидеть этот подход, реализованный в Примере разделения кода Rollup.

Если у вас есть лучший ответ на эту проблему, пожалуйста, поделитесь им в вопросах или здесь.