RequireJS,Shim,依赖项未正确加载

时间:2013-04-24 17:34:34

标签: javascript requirejs

我一直在研究一个比我以前拥有更多前端脚本的项目,我决定使用RequireJS来保持它的整洁。在彻夜难眠之后,我仍然遇到一些问题,其中某些依赖关系似乎在事后加载。

例如,Sammy需要jQuery才能工作。刷新我的应用程序会导致“Sammy,函数未定义”的错误。是否在加载jQuery之前执行Require函数?

需要配置:

    require.config({
        paths: {
            'jquery': 'vendor/jquery.2.min',
            'sammy': 'vendor/sammy',
        },
        shim: {
            'jquery': {
                debs: [],
                exports: '$'
            },
            'sammy': {
                debs: ['jquery'],
                exports: 'Sammy'
            }
            ...

至于我的导航:

define([
    'jquery',
    'sammy'
], function($, Sammy) {

    return Sammy(function() {
    ...

在大约10%的测试中,在点击Sammy功能后,应用程序会出现以下情况:

Uncaught ReferenceError: jQuery is not defined sammy.js:2120
Uncaught TypeError: undefined is not a function 

RequireJS的工作方式使我迷惑。我错过了什么?

1 个答案:

答案 0 :(得分:10)

您的配置中有拼写错误,正确的属性名称将是deps,而不是documentation中指定的debs

'jquery': {
    deps: [],
    exports: '$'
},
'sammy': {
    deps: ['jquery'],
    exports: 'Sammy'
}