У меня следующая проблема:
В настоящее время я обновляю свой процесс до веб-пакета и у меня проблемы с областью действия. У меня есть некоторые библиотеки поставщиков, которые расширяют 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.
Есть ли кто-то, кто имел эту проблему раньше и может мне помочь?