Я пытаюсь использовать require.js в первый раз, однако я получаю сообщение об ошибке:
Uncaught 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();
В моем файле Router:
// 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, поэтому вам придется самому установить его. Попробуйте сделать это, используя прокладку с функцией init
для Backbone:
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone',
init: function (_, $) { Backbone.$ = $; return Backbone; }
}
jquery: { exports: '$' }
в своей подкладке, как вы делали для подчеркивания.