Закрытие Webpack - как получить доступ к функции-прототипу jQuery вне пакета? - PullRequest
0 голосов
/ 21 апреля 2020

У меня следующая проблема:

В настоящее время я обновляю свой процесс до веб-пакета и у меня проблемы с областью действия. У меня есть некоторые библиотеки поставщиков, которые расширяют jQuery дополнительными функциями.

Одна из них такова:

;(function( $ ) {
  $.fn.createArea = function( options ) {
        "use strict";

        if( this.length === 0 ) {
            return this;
        }

        var opt = $.extend( {

            /* return the url, that we want to redirect */
            url: function( $el ) {
                return $el.find('a:first').attr('href');
            },

.........
........
........

    };

}( jQuery || window.jQuery ));

Теперь, в моем файле ввода, я потребовал их так:

require('./js/createArea.js')
// import './js/createArea.js' // also tried this way.

Однако у меня есть дополнительные файлы JS (не загруженные через Webpack), которые необходимы для доступа к ним. Так как webpack определяет свои пакеты, он недоступен, хотя я загрузил пакет раньше, чем актуальный файл JS, который в этом нуждается. Поэтому я получаю сообщение об ошибке:

jquery. js: 2 Uncaught TypeError: $ (...). Children (...). CreateArea не является функцией


Я провел некоторое исследование и обнаружил следующие полезные сообщения:

У веб-пакета возникли проблемы с областями действия Невозможно получить доступ к функции, связанной с WebPack

Заявлением глобальные (оконные) переменные, некоторые из модулей, которые создаются следующим образом:

;(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  typeof define === 'function' && define.amd ? define(factory) :
  (global.Swiper = factory());
}(this, (function () { 'use strict';

  var doc = (typeof document === 'undefined') ? {
    body: {},
    addEventListener: function addEventListener() {},

работает.

Но не в случае расширения jQuery prototype.

Есть ли кто-то, кто имел эту проблему раньше и может мне помочь?

...