0

我最近开始使用需要 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();  
});

});

所以我是一个非常大的初学者,请有人给我一个提示,或者解释我为什么会收到这个错误?为什么会在页面刷新时发生这种情况?

4

1 回答 1

2

这肯定已经是个问题了:

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

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

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

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

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

更多在这里

于 2013-02-18T08:16:01.480 回答