Ошибка веб-пакета при загрузке lodash при использовании внешнего конфига
Я пытаюсь изменить текущий проект с помощью веб-пакета. В моих сценариях я использую библиотеку lodash, но у меня также есть сценарии, которые не написаны на ES6, поэтому я загружаю lodash глобально, используя обычный тег сценария. На основе документации веб-пакета я добавил приведенную ниже конфигурацию в веб-пакет ( https://webpack.js.org/configuration/externals/).
lodash : {
commonjs: 'lodash',
amd: 'lodash',
root: '_' // indicates global variable
},
Я без проблем компилирую код, используя babel, но когда выполняется настоящий код, я получаю следующую ошибку "TypeError: Невозможно прочитать свойство forEach of undefined"
Если я удалю import _ from "lodash";
оператор из файла, тогда проблема решена, и сценарий работает, как и ожидалось, когда _ находится в глобальном.
Но ожидалось, что это сработает и без добавления правильных внешних символов? В соответствии с примером веб-пакета для jquery
module.exports = {
//...
externals: {
jquery: 'jQuery'
}
};
Код ниже не изменится
import $ from 'jquery';
$('.my-element').animate(/* ... */);
В моем случае почему не работает? Какие-либо предложения? идеи?
2 ответа
Я думаю, что нашел решение, после того, как я прочитал документацию снова и снова, я заметил это сообщение, которое также находится на желтой границе
An object with { root, amd, commonjs, ... } is only allowed for libraryTarget: 'umd'. It's not allowed for other library targets.
Так что я изменил свой конфиг с
lodash : {
commonjs: 'lodash',
amd: 'lodash',
root: '_' // indicates global variable
}
в
lodash: '_'
и проблема решена, сейчас работает как положено. Будет здорово конечно если я пойму почему это было проблемой
Я столкнулся с той же проблемой и изменил внешний тип: «окно».
{
externalsType: 'window',
externals: {
lodash: '_'
},
...
}
почти решить проблему, но в следующем состоянии выдают ошибки:
import _ from 'lodash';
const { get } = _;