require.js Uncaught TypeError:对象#的属性’$’不是函数

我第一次尝试使用require.js,但是我收到了错误:

未捕获的TypeError:对象#的属性’$’不是函数。

require.config({ shim: { "jquery": { exports: '$' }, underscore: { exports: '_' }, backbone: { deps: ['underscore', 'jquery'], exports: 'Backbone' } }, paths: { jquery: '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min', underscore: '//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min', backbone: '//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.0/backbone-min', templates: '/referralgenie/templates/' } }); require([ 'app' ], function(App){ App.initialize(); }); 

它声明错误在backbone.js中,所以我发现很难调试。

错误来自这里的行:

 Backbone.history.start(); 

在我的路由器文件中:

 // Filename: router.js define([ 'jquery', 'underscore', 'backbone', 'views/CampaginView', 'views/RewardView', 'views/FriendRewardView', 'views/ParticipantView' ], function($, _, Backbone, CampaginView, RewardView, FriendRewardView, ParticipantView) { var AppRouter = Backbone.Router.extend({ routes: { ':id': 'portal-home' // matches http://example.com/#anything-here } }); var initialize = function(){ var app_router = new AppRouter; app_router.on('route:portal-home',function(id) { var campaignView = new CampaginView(); campaignView.render({id: id}); }); Backbone.history.start(); }; return { initialize: initialize }; }); 

这是基于这个SO问题/答案并基于阅读Backbone.js代码的预感。

我认为Backbone很难找到jQuery,所以你必须自己设置它。 尝试使用带有Backbone的init函数的垫片:

  backbone: { deps: ['underscore', 'jquery'], exports: 'Backbone', init: function (_, $) { Backbone.$ = $; return Backbone; } }