页面刷新后RequireJS未捕获的ReferenceError:$未定义

时间:2013-02-18 07:44:16

标签: javascript requirejs

我最近开始工作机智需要js,我有一个问题。

每件事情都在加载完美,但有时当我刷新页面时会出现以下错误

Uncaught ReferenceError: $ is not defined 

如果我再次刷新它的消失,如果我再次刷新那里。

这是我的结构

requirejs.config({
    baseUrl: siteUrl + "assets/js",

    paths: {
        "jquery": "./libs/jquery",
        "jquery-ui": "libs/jquery-ui",
        "bootstrap": "libs/bootstrap",
        "scripts": "scripts",
        "plugins": "plugins",
    }, 

    shim: {

    'jquery-ui': {
        deps: [ 'jquery' ],
        exports: 'jquery-ui'
    },
    'bootstrap': {
        deps: [ 'jquery' ],
        exports: 'bootstrap'
    },

    'plugins/controls': {
        deps: [ 'jquery', 'plugins/dialog2'],
        exports: 'plugins/controls'
    },

    'plugins/form': {
        deps: [ 'jquery'],
        exports: 'plugins/form'
    },

    'plugins/dialog2': {
        deps: [ 'jquery' ],
        exports: 'plugins/dialog2'
    },

     'plugins/chosen': {
        deps: [ 'jquery' ],
        exports: 'plugins/chosen'
    },

     waitSeconds: 25,
}
});

/*
    loading libs for every page
*/
requirejs(['jquery', 'jquery-ui', 'bootstrap', 'plugins/chosen'],
function($, chosen){
/*
    loading global selectors and variables
*/ 
$(function () {
   $('.chzn-select').chosen();  
});

});

所以我是一个非常大的开端,可以取悦有人给我一个提示,或解释为什么我得到这个错误?为什么会在页面刷新时发生这种情况?

1 个答案:

答案 0 :(得分:2)

这肯定是一个问题:

requirejs(['jquery', 'jquery-ui', 'bootstrap', 'plugins/chosen'],
function($, chosen){
...

您想要加载插件chosen,但事实上它是jquery-ui。由于您不使用它,请删除参数(但不要从数组中删除)。

我怀疑您的插件plugins/chosen(以及其他)的导出值有shim错误。

你写过那些插件吗?如果是这样,只需将它们的代码包装在define块中,您就不需要再将它们填充:

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

更多here