Не удается загрузить плагин inview jQuery с помощью RequireJS

Я пытаюсь использовать плагин inview в моем приложении, которое использует RequireJS для загрузки скриптов и в настоящее время создается / оптимизируется с помощью Almond. Я получаю консольную ошибку:

TypeError: 'undefined' is not an object (evaluating 'global.jquery.inview')

Который, кажется, прибывает из shim, который требует, добавляет к концу файла inview:

define("jquery.inview", ["jquery"], (function (global) {
    return function () {
        var ret, fn;
        return ret || global.jquery.inview;
    };
}(this)));

Мой требуемый конфиг выглядит следующим образом:

require.config({
    paths: {
        'jquery': '../../bower_components/jquery/dist/jquery',
        'text': '../../bower_components/requirejs-text/text',
        'tweenmax': '../../bower_components/greensock/src/uncompressed/TweenMax',
        'jquery.inview': '../../bower_components/jquery.inview/jquery.inview'
    },
    shim: {
        "jquery.inview": {
            deps: ['jquery'],
            exports: 'jquery.inview'
        }
    }
});

Любая помощь высоко ценится!

1 ответ

Решение

jquery.inview это плагин JQuery Поэтому он устанавливает себя как плагины, изменяя $, Когда вы говорите RequireJS, что он экспортирует jquery.inview RequireJS пытается разрешить jquery.inview в глобальном пространстве, которое не работает, потому что jQuery доступен в глобальном пространстве как $ или же jQueryа не как jquery,

Вы могли бы оставить exports или установить его на то, что jquery.inview действительно определяет. Например, читая код jquery.inview Я вижу, что это устанавливает $.event.special.inview так что вы можете использовать это в своем exports,

Если вам интересно, для плагинов jQuery exports значение полезно только для бухгалтерии RequireJS. Вы сами не получаете доступ к плагину через экспортируемое им значение, а через API, предоставляемый через jQuery.

Другие вопросы по тегам