require.js Uncaught TypeError: Свойство '$' объекта # <Object> не является функцией

0

Я пытаюсь использовать 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
  };
});
  • 0
    Вы можете опубликовать трассировку стека ошибки типа и номер версии используемой магистрали? Вам, возможно, придется сделать jquery: { exports: '$' } в своей подкладке, как вы делали для подчеркивания.
  • 0
    номера версий указаны в приведенных выше кодах в коде. это версия, которую я использую. Я попытался экспортировать $, но это не сработало, обновил код выше, чтобы отразить новый код.
Показать ещё 6 комментариев
Теги:
requirejs
backbone.js

1 ответ

2

Это догадка, основанная на этом вопросе/ответе SO, и основана на чтении кода Backbone.js.

Я думаю, что Backbone не может найти jQuery, поэтому вам придется самому установить его. Попробуйте сделать это, используя прокладку с функцией init для Backbone:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню