0

不使用优化,应用程序工作正常。但是通过优化(缩小 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。

4

1 回答 1

2

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

mainConfigFile: 'path/to/main.js'

有关此配置选项的更多信息,请参阅 require.js API 文档 - 主配置文件

您应该使用 mainConfigFile 构建选项来指定查找 shim 配置的文件。否则优化器将不知道 shim 配置。另一个选项是在构建配置文件中复制 shim 配置。

由于您已经在构建配置文件中拥有它,因此请尝试相反的方式。

于 2013-04-29T00:47:15.800 回答