主干加载了requirejs shim但仍然是Backbone undefined错误

时间:2013-12-19 16:39:03

标签: javascript backbone.js requirejs underscore.js amd

我已经阅读了许多答案,并按照我可能的步骤(似乎对我而言)但仍然DevTools显示Backbone is not defined.错误。

以下是我使用requirejs shim的方法。

<script data-main="js/subject_main.js" src="js/libs/require.js"></script>

subject_main.js

require.config({
    paths: {
        bootstrap: '../libs/bootstrap.min',
        jquery:     '../libs/jquery',
        underscore: '../libs/underscore',
        backbone:   '../libs/backbone',
        text:       '../libs/text',
        json2:      '../libs/json2',
        templates:   '../../templates'
    },
    shim: {
        'boostrap':{
          deps: ['jquery']
        },
        'backbone': {
            deps: ['jquery', 'underscore'],
            exports: 'Backbone'
        },
        'underscore': {
            exports: '_'
        }            
    }

});

require(['subjects', 'json2'], function(app) {
    app.initialize();
});

subjects.js

define(['jquery', 'underscore', 'backbone', 'subject_router'], function($, _, Backbone, router) {
    return {
        initialize: function() {
            Backbone.history.start();
        }
    };
});

subject_router

define([
    'jquery',
    'underscore',
    'backbone',
    'models/subject_item_model',
    'collections/subjects_collection',
    'views/subject_view'
],function($, _, Backbone) {              

    var AppRouter = Backbone.Router.extend({ ... });

 return new AppRouter();
});

Chrome DevTools显示以下顺序(顺序)的脚本 - enter image description here

如您所见,骨干网在最后加载。我不知道出了什么问题,在哪里。

1 个答案:

答案 0 :(得分:0)

在这里,

backbone.js或者underscore.js对我来说很好看,而且确实正在加载它们!

您的开发工具中的404指的是源映射文件(underscore.min.map)。您可能想看一下这篇文章:Missing Javascript ".map" file for Underscore.js when loading ASP.NET web page

PS:在您的subject_router代码中,传递给模块函数的参数不匹配。