要求JS使用Node和jQuery

时间:2014-01-08 09:08:18

标签: jquery node.js requirejs r.js

我正在使用r.js尝试通过在我的主应用程序文件上运行r.js来编译我的require JS应用程序:

$ r.js js/bootstrap.js

但是,我在使用jQuery时遇到错误:

Error: Evaluating www/js/lib/jquery_plugins/slider.js as module "slider" failed with error: ReferenceError: jQuery is not defined

所以我知道这是因为我的滑块插件中引用了jQuery,但我认为这可以通过在我的bootstrap.js文件中添加jQuery作为垫片来解决,该文件看起来像这样:

// Require JS bootstrap file
require.config({

    paths: {
        jquery: 'lib/jquery',
        backbone: 'lib/backbone',
        backboneLocalStorage: 'lib/backbone.localStorage',
        underscore: 'lib/underscore',
        util: 'lib/util',
        config: 'config',
        lang: 'lang',
        hammer: 'lib/hammer',
        moment: 'lib/jquery_plugins/moment',
        slider: 'lib/jquery_plugins/slider'
    },
    shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['underscore'],
            exports: 'Backbone'
        },
        hammer: {
            deps: ['jquery'],
            exports: 'Hammer'
        }
    }
});

// load the app
require(['app'], function(App) {
    if(navigator.userAgent.indexOf("Chrome")) {
        // then I am running on my local host on chrome
        // so force device ready
        onDeviceReady();
    }
    document.addEventListener('deviceready', onDeviceReady, false);

    function onDeviceReady() {
        App.initialize();
    }
});

我尝试将导出更改为jQuery而不是$,但这似乎没有改变任何内容。

1 个答案:

答案 0 :(得分:0)

在垫片下,您尚未指定滑块和放大器的依赖关系。时刻。

请检查滑块和滑块时刻出口:)

shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['underscore'],
            exports: 'Backbone'
        },
        hammer: {
            deps: ['jquery'],
            exports: 'Hammer'
        },
        slider: {
            deps: ['jquery'],
            exports: 'slider'
        },
        moment: {
            deps: ['jquery'],
            exports: 'moment'
        }
    }