Подтвердить что ты не робот

Require.js + R.js Оптимизатор, игнорирующий Shim

R.js не загружает мою прокладку, и, таким образом, jQuery загружается до того, как tinyMCE и инициализируется маленьким, прежде чем он будет загружен. Как я могу заставить прокладку работать?:

сборки-js.js:

var requirejs = require('requirejs');
var config = {
    mainConfigFile: '../js/main.js',
    include: [],
    name: 'main',
    out: '../js/build/build.js',
};

    requirejs.optimize(config, function (buildResponse) {
    var contents = fs.readFileSync(config.out, 'utf8');
});

main.js:

require.config({
    paths: {
        jQuery: 'common/libs/jquery/jquery-min',
        TinyMCE: 'common/libs/tinyMCE/tiny_mce',
    },
    shim: {
        'jQuery': {
            deps:['TinyMCE'],
            exports: '$',
        },
       'jQueryUi': {
            deps: ['jQuery']
        },
        'jQuerySelectmenu': {
            deps: ['jQuery', 'jQueryUi']
        },
        'jQueryAutosize': {
            depts: ['jQuery']
        },
        'Underscore': {
            exports: '_'
        },
        'Backbone': {
            deps: ['Underscore', 'jQuery'],
            exports: 'Backbone'
        }
    }
});

require(['common/src/app'], function (App) {
    App.initialize();
});
4b9b3361

Ответ 2

В последнее время я столкнулся с некоторыми подобными проблемами, которые немного озадачили меня. Я не знаком с кодом TinyMCE, но вижу, что вы его не подделали.

Прокладки (как правило) не могут зависеть от библиотек стиля AMD. Не уверен, что TinyMCE попадает в категорию стиля модуля AMD или нет, но если это так.. у вас проблемы. Если это не так, вам нужно также подкрепить его.

https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

Важное предупреждение для конфигурации "shim":

Используйте только другие модули "прокладки" в качестве зависимостей для подгоняемых скриптов или библиотек AMD, у которых нет зависимостей, и вызывается define() после того, как они также создают глобальный (например, jQuery или lodash). В противном случае, если вы используете модуль AMD в качестве зависимости для конфигурационного модуля shim, после сборки, этот модуль AMD может не оцениваться до тех пор, пока не будет выполнен проецируемый код в сборке, и произойдет ошибка. Конечным решением является обновление всего проделанного кода, чтобы иметь дополнительные вызовы AMD define().