Requirejs + jQuery plugins. Почему периодически возникают ошибки?

Вообщем вопрос простой.
Почему так работает всегда:
require.config({
	shim: {
		'jquery': {exports: 'jQuery'},
		'jquery.plugin': { exports: 'jQuery', deps: ['jquery'] },
	},
});

define([
	'jquery.plugin'
], function($) {
	$('body').plugin();
});


а так, через раз:
require.config({
	shim: {
		'jquery': {exports: 'jQuery'},
		'jquery.plugin': { deps: ['jquery'] },
	},
});

define([
	'jquery', 'jquery.plugin'
], function($) {
	$('body').plugin();
});


Периодически выдает ошибку - TypeError: Object [object Object] has no method 'plugin'.

Методом тыка, было определено , что определение параметра export при выполнении метода config определяет ключевую роль. И когда пишешь:

define([
	'jquery', 'jquery.plugin'
], function(dep1, dep2) {
	..
});


то dep1 не всегда === dep2 (но иногда O_o).

Что за ерунда?
  • Вопрос задан
  • 4755 просмотров
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Мануал рекомендует шимать плагины таким образом:
'jquery.plugin': { exports: 'jQuery.fn.plugin', deps: ['jquery'] }
Ответ написан
@Tuch Автор вопроса
Ответ оказался проще и банальнее - параллельно с одним jQuery, подключался второй (yii assets... AppAsset::register($this); ), тем самым было два экземпляра jQuery.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы