Requirejs:jQuery未定义

Ale*_*min 5 javascript jquery requirejs

不知怎的,我总是收到这个错误:

未捕获的ReferenceError:未定义jQuery

我的印象是jQuery(通过CDN加载)需要更多时间加载(通过Chrome上的网络选项卡确认).我在我的PC上本地运行,这就是为什么CDN调用总是比库更长.但是在加载jQuery之前,是不是需要等待jQuery加载其他库之前?

我的boot.js:

(function(){
    requirejs.config({
        baseUrl: '/assets/js/',
        paths: {
            'lib': 'lib/',
            'src': 'src/',
            'jquery': [
                '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
                'lib/jquery-1.9.1.min'
            ],
            'mootools': 'lib/mootools-core-1.4.5',
            'class.mutators': 'lib/Class.Mutators.jQuery'
            //'order': 'assets/js/lib/order',
        },
        shim: {
            'class.mutators': {
                deps: [
                    'mootools'
                ],
                exports: 'classmutators'
            },
            'underscore': {
                    exports: '_'
            }
        },
        waitSeconds: 15
    });

    requirejs([
        'jquery',
        'src/app-require'
    ], function($){
        $(document).ready(function(){
            var App = new $.App($('body'));
        });
    });

})();
Run Code Online (Sandbox Code Playgroud)

我的app-require.js:

define([
    'mootools',
    'class.mutators',
    'src/Tracker',
    'lib/jquery.easing.1.3',
    'lib/nivo/jquery.nivo.slider.pack',
    'lib/isotope/jquery.isotope.min',
    'lib/waypoints.min'
], function() {

var className = 'App';
//--
return $[className] = new Class({
    jQuery: className,

    Implements: [Options, Events],

    options: {},

    //-- init
    //---------------------------------------------
    initialize: function(el, options) {
              ...
    },

            ...
    });
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ant*_*ine 4

jQuery 不存在任何依赖关系。您应该将其添加到 mutator 的 shim 依赖项中:

  shim: {
            'class.mutators': {
                deps: [
                    'jquery',
                    'mootools'
                ],
                exports: 'classmutators'
            },
            'underscore': {
                    exports: '_'
            }
        },
Run Code Online (Sandbox Code Playgroud)

以下是如何使用 shim 处理 jQuery 依赖关系的官方示例: https: //github.com/requirejs/example-jquery-shim#how-its-set-up

  • 它将在加载 classmutators 之前强制加载 jquery。您没有指定哪些文件引发了错误,所以我猜是这个文件(给出名称)。不,require.js 不应该使用 jquery 作为所有内容的依赖项,因此您必须为每个包含项手动添加依赖项。 (4认同)