Экспорт в Webpack 4 не отображается как настроено - PullRequest
0 голосов
/ 16 ноября 2018

Я обновляюсь с Webpack 3 до 4.

На всех моих веб-страницах фактически есть две точки входа: одна, общая для всех страниц, а другая - для конкретной страницы.

Я думал, что получил все для работы с webpack 4, но похоже, что некоторые из моих модулей выполнялись дважды;получается, что каждая точка входа загружает модуль, даже если модуль находился в общем js-файле.

Похоже, что решением было установить optimization.runtimeChunk = "single", что указывало бы веб-пакету обмениваться средой выполнения между всеми чанками..

Если посмотреть на вывод файлов js, это выглядело как ожидалось;однако каждая из моих точек входа предоставляет свой экспорт через следующую конфигурацию:

output: {... libraryTarget: "var", libarary: ["MyLibrary", "[name]"]}

Когда я загружаю веб-страницу и пытаюсь получить доступ к экспортированным объектам / функциям, я получаю сообщение об ошибке при попытке выполнить следующее:

MyLibrary["entry"]

, где "запись" - это имя одной из точек входа, результатом является число (вместо ожидаемого объекта, членами которого являются различные именованные экспорты).

Если я удаляю настройку optimization.runtimeChunk = "single", то MyLibrary["entry"] возвращает ожидаемый объект с моими экспортерами, но у меня возникает та же проблема, что мои модули могут быть загружены несколько раз.

1 Ответ

0 голосов
/ 16 ноября 2018

Я понял это.

Когда вы указываете optimization.runtimeChunk = "single", он выводит файл с именем runtime.js. Этот файл должен быть включен в веб-страницу для функционирования веб-пакета. Как только я включил этот файл, все начало работать как положено.

Pro совет: optimization.runtimeChunk = "single" - это сокращение для:

optimization : {
  runtimeChunk: {
    name: 'runtime'
  }
}

Если вы переименуете «время выполнения» так, чтобы оно совпадало с другим чанком, оно будет включать биты кода времени выполнения в этот чанк.

...