webpack4 часто генерирует модули, начинающиеся с комментария /*! no static exports found */
. Это предупреждение и / или что это на самом деле означает?
Вот билет на это
https://github.com/webpack/webpack/issues/4877
И соответствующая строчка в коде
https://github.com/webpack/webpack/blob/master/lib/FunctionModuleTemplatePlugin.js#L60
В принципе, не беспокойтесь об этом. Это просто означает, что webpack не обнаружил экспорт, отличный от CommonJS или AMD (динамический). Это совершенно нормально, а не предупреждение.
До CommonJS, AMD и node у нас были только теги скриптов в браузере, поэтому вам нужно было сделать что-то вроде этого
<head>
<script src = "jquery"></script>
<script src = "jqueryPlugin"></script>
</head>
чтобы jqueryPlugin работал правильно, jquery должен был быть импортирован браузером и запущен до
в этом примере jquery не имеет статического экспорта, это глобальная мутация, как и jqueryPlugin, поэтому, если вы связываете их с webpack, вы получите те же сообщения. экспорта не было, каждый скрипт либо мутировал, либо использовал глобальные переменные (window.$ = function(){}
в качестве классического примера), где теги скриптов должны были быть специально упорядочены или объединены для правильной работы.
Спецификация модуля CommonJS - это стандарт, используемый в Node.js для работы с модулями. webpack использует module.export
для оптимизации зависимостей и предотвращения повторного объединения фрагментов или сценариев, которые он уже связал, присваивая идентификатор данной зависимости и ее поддереву. Используя такие инструменты, как babel и webpack, вы можете писать современный JS, commonjs или что угодно, безопасно компилировать для браузера и сервера, не беспокоясь о поддержке браузером синтаксиса.
если у вас есть скрипты старой школы, которые не используют синтаксис commonjs, где вы не раскрываете module.export(s)
, вы должны указать webpack на создание этих скриптов в определенном порядке, иначе вы рискуете, что плагин будет запущен клиентом до того, как будет определен jquery. по большей части браузеры выполняют код сверху вниз. вот когда вы увидите сообщение:
/*! no static exports found */
TL; DR, если вы ничего не экспортируете из необработанных предварительно скомпилированных скриптов, вы получите комментарий в пакете webpack, в котором указано, что
подробнее читайте:
вторая ссылка GH - 404ing