requireJS优化:undefined不是函数

时间:2013-04-26 09:41:58

标签: requirejs

不使用优化,应用程序运行正常。但是通过优化(缩小JS),缩小文件在加载主页时抛出“未定义不是函数”。

问题是:在主配置文件中,我使用如下所示在行-- new controller() - undefined中创建加载问题。

domReady(function() {

        if (domReady) {
    calendar.controller = new controller();
    if (Backbone) {
                Backbone.history.start();
            }
        }
    });

我的build.js如下:

({
    'baseUrl': './',
    'dir': '../build/js',
    'paths': {
        'jquery': 'require-jquery',
        'underscore': 'lib/lodash.min',
        'backbone': 'lib/backbone-min',
        'mustache': 'lib/mustache',
        'bootstrap': 'lib/bootstrap.min',
        'fullcalendar': 'lib/fullcalendar.min',
        'controller': 'calendar/controllers/home_controller',
        'jqueryui':'lib/jquery-ui.min',
        'moment':'lib/moment.min',
        'customscroll':'lib/jquery.mCustomScrollbar',
        'mousewheel':'lib/jquery.mousewheel.min',
        'validate':'lib/jquery.validate.min',
        'datatable':'lib/jquery.dataTables.min',
        'blockUi':'lib/jquery.blockUI',
        'fileupload':'lib/fileuploader'
    },
    'shim': {
        'underscore': {
            'exports': '_'
        },
        'backbone': {
            'deps': ['jquery','underscore'],
            'exports': 'Backbone'
        },
        'bootstrap': {
            'deps': ['jquery'],
            'exports': 'jQuery.fn.alert'
        },
        'fullcalendar': {
            'deps': ['jquery']            
        },
        'jqueryui': {
            'deps': ['jquery']            
        },
        'customscroll': {
            'deps': ['jquery']            
        },
        'mousewheel': {
            'deps': ['jquery']            
        },
        'validate': {
            'deps': ['jquery']            
        },
        'datatable': {
            'deps': ['jquery']            
        },
        'fileupload': {
            'deps': ['jquery','jqueryui']            
        },
        'blockUi': {
            'deps': ['jquery']            
        },
        'controller': {
            'deps': ['backbone','fullcalendar','jqueryui','moment','customscroll','mousewheel','validate','datatable','blockUi','fileupload']
        }       

    },
    'locale': 'en-us',
    'optimize': 'uglify',
    'inlineText': true,
    'modules': [

        {
            'name': 'calendar/controllers/home_controller',
            'exclude': ['jquery']

        }

    ]
})

RequireJS版本:2.1.1。

1 个答案:

答案 0 :(得分:2)

似乎优化器没有找到你的垫片配置。您需要使用mainConfigFile构建选项指定它。

mainConfigFile: 'path/to/main.js'

有关此配置选项的更多信息,请参阅require.js API doc - Main config file

  

您应该使用mainConfigFile构建选项来指定文件   在哪里找到垫片配置。否则优化器将无法知道   垫片配置。另一种选择是复制shim配置   在构建配置文件中。

正如您已在构建配置文件中使用它,请尝试相反的方法。