@kirill-93

Npm модуль требует jQuery. Как исправить?

Сайт на вью жс, подключил модуль, который рисует линии между элементами. Все хорошо, но этот модуль требует jQuery. И jquery у меня есть, тоже в виде модуля.
То есть код приложения выглядит так:
import $ from 'jquery'
import svgConnect from 'HTMLSVGconnect'

Модуль HTMLSVGconnect ругается, что не найден jQuery.
Код этого модуля выглядит так:
; (function ($, window, document, undefined) {
  //Код модуля
})(jQuery, window, document);

То есть он подразумевает, что на странице уже подключен jquery.
Я просто добавил импорт jquery в этот модуль и все заработало
import jQuery from 'jquery'

; (function ($, window, document, undefined) {
  //Код модуля
})(jQuery, window, document);

Но работало, пока я не установил новый модуль и npm не затер изменения.
Как сделать, чтоб модуль HTMLSVGconnect использовал модуль jquery?
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
Это плагин для $, написанный без поддержки нормальных человеческих модулей. Он подразумевает, что $ есть в глобальной области видимости.

Самое простое решение:
import $ from 'jquery'
window.jQuery = $

import svgConnect from 'HTMLSVGconnect'


Может быть, можно провернуть как-то иначе, но в любом случае будет костыль.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
Попробуйте обернуть код плагина в такую функцию
;(function(factory) {
	if (typeof define === 'function' && define.amd) {
		define(['jquery'], factory);
	} else if (typeof module === 'object' && module.exports) {
		module.exports = function(root, jQuery) {
			if (jQuery === undefined) {
				if (typeof window !== 'undefined') {
					jQuery = require('jquery');
				} else {
					jQuery = require('jquery')(root);
				}
			}
			factory(jQuery);
			return jQuery;
		};
	} else {
		factory(jQuery);
	}
}(function($) {
	// код плагина
}));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы