未捕获的TypeError:无法读取未定义的RequireJS Optimizer Backbone的属性“View”

时间:2013-03-16 22:15:55

标签: cordova backbone.js requirejs

我在尝试使用RequireJS,BackboneJS和各种库来编写我的Phonegap应用程序时遇到了一些问题。使用r.js之后。

在优化之前一切正常但是之后我在main-build.js中遇到以下错误

  

未捕获的TypeError:无法读取属性“查看”

以下是我的require config

require.config({
baseUrl: 'lib',
paths: {
    domReady        :   'require/domReady',
    text            :   'require/text',
    async           :   'require/async',
    jquery          :   'jquery/jquery',
    jqmconfig       :   'jqm/jqm-config',
    jqm             :   'jqm/jquery.mobile',
    underscore      :   'underscore/underscore',
    backbone        :   'backbone/backbone',
    jqmaps          :   'google/jquery.ui.map',
    router          :   '../app/router',
    models          :   '../app/models',
    collections     :   '../app/collections',
    views           :   '../app/views',
    templates       :   '../app/templates',
    app             :   '../app/app'
},
shim: {
    underscore: {
        exports     :   '_'
   },
   backbone: {
       deps         :   ['jquery', 'jqmconfig', 'jqm', 'underscore'],
       exports      :   'Backbone'
  },
  jqmconfig         :   ['jquery'],
  jqm               :   ['jquery','jqmconfig'],
  jqmaps            :   ['jqm']
}});

这是我的引导程序

require(
[
    'app', 'domReady', 'jqmconfig'
], 

function(app, domReady){

    domReady(function() {
        // On device ready initialize the app code
    });
});

这是我的build.js

({
baseUrl: 'lib',
paths: {
    domReady        :   'require/domReady',
    text            :   'require/text',
    async           :   'require/async',
    jquery          :   'jquery/jquery',
    jqmconfig       :   'jqm/jqm-config',
    jqm             :   'jqm/jquery.mobile',
    underscore      :   'underscore/underscore',
    backbone        :   'backbone/backbone',
    jqmaps          :   'google/jquery.ui.map',
    router          :   '../app/router',
    models          :   '../app/models',
    collections     :   '../app/collections',
    views           :   '../app/views',
    templates       :   '../app/templates',
    app             :   '../app/app',
    main            :   '../app/main', 
},
name: 'main',
out: 'app/main-build.js'})

有什么明显的东西吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

shim-config应该在build.js文件中公开,因此r.js可以将填充程序依赖项正确地包含在app/main-build.js中。您只需在build.js中复制您的垫片,或者更好地指定mainConfigFile选项,这样您的pathsshim只能在一个地方列出。