Ошибка веб-пакета при загрузке 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 } = _;
Другие вопросы по тегам