Динамический импорт Webpack 4, приводящий к TypeError: [объектный модуль] не является конструктором - PullRequest
0 голосов
/ 03 ноября 2019

Я не могу понять, что я делаю здесь неправильно - пытаюсь динамически импортировать sweetalert2 только при необходимости после нажатия на элемент. onclick вызывает эту функцию:

  function triggerForm() {
    import ('sweetalert2' /* webpackChunkName: "sweetalert2" */)
      .then( Swal => {
        Swal.fire({
         // alert stuff
        })
      })
      .catch( error => console.error(error) )
  }

Я получаю TypeError: [object Module] is not a constructor в строке Swal.fire. Обычный импорт работает нормально.

Конфигурация вывода веб-пакета:

  output: {
    path: path.resolve(__dirname, 'build'),
    filename: '[name].bundle.js',
    chunkFilename: '[name].bundle.js',
    publicPath: config.publicPath,
  },

1 Ответ

0 голосов
/ 03 ноября 2019

Оказывается, импорт по умолчанию больше не играет. Поэтому мы должны специально назначить значение по умолчанию следующим образом:

  function triggerForm() {
    import ('sweetalert2' /* webpackChunkName: "sweetalert2" */)
      .then( ({ default: Swal }) => {
        Swal.fire({
         // alert stuff
        })
      })
      .catch( error => console.error(error) )
  }

Обратите внимание, в частности, на строку .then( ({ default: Swal }) => { выше.

...