2014-12-27 7 views
1

Ошибка указывает на библиотеку backbone.js: 219. Ошибка возникает в моем файле main.js в требуют ([ 'приложения'], функцияRequirejs + Backbone Uncaught TypeError: Невозможно прочитать свойство «каждый» неопределенного

main.js файл:.

require.config({ 
    baseUrl: 'scripts', 

    paths: { 
    app: '../app', 
    jquery: 'jquery', 
    underscore: 'underscore', 
    backbone: 'backbone', 
    router: '../router' 
    }, 

    shim: { 
     backbone: { 
      deps: ['jquery','underscore'], 
      exports: 'Backbone' 
     } 
    } 
}); 

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

Мой app.js файл:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'router' // Request router.js 
], function($, _, Backbone, Router){ 

    var initialize = function(){ 
    // Pass in our Router module and call it's initialize function 
    Router.initialize(); 
    }; 

    return { 
    initialize: initialize 
    }; 
}); 

Мои router.js файл:

define(['jquery', 'underscore', 'backbone'], function ($, _, Backbone) { 


    'use strict'; 

    // Router 
    var AppRouter = Backbone.Router.extend({ 

    routes:{ 
     "":"list", 
     "wines/:id":"wineDetails" 
    }, 

    list:function() { 
     // ... 
    }, 

    wineDetails:function (id) { 
     // ... 
    } 
    }); 
    var initialize = function(){ 
    var app_router = new AppRouter; 
    Backbone.history.start(); 
    }; 

    return { 
    initialize: initialize 
    }; 
}); 

Этот вопрос, кажется, похож на this one, но ни одно из предложений не работал меня.

ответ

0

В router.js есть две ошибки.

  1. использовать «define» заменить «require»;
  2. объект возврата должен содержать метод «initialize»;

код, как это,

define(['jquery', 'underscore', 'backbone'], function ($, _, Backbone) { 
    'use strict'; 

    // Router 
    var AppRouter = Backbone.Router.extend({ 

    routes:{ 
     "":"list", 
     "wines/:id":"wineDetails" 
    }, 

    list:function() { 
     // ... 
    }, 

    wineDetails:function (id) { 
     // ... 
    } 
    }); 
    var initialize = function(){ 
    var app_router = new AppRouter; 
    Backbone.history.start(); 
    } 
    return { 
    initialize: initialize 
    }; 
}); 
+0

Это хорошие исправления, но они не решили мою проблему. По-прежнему получается такая же ошибка. – ltrainpr

+0

@ltrainpr, я отредактировал router.js вот так, нет ошибки. Вы могли бы остаться только: определить ([ 'JQuery', 'подчеркивание', 'магистральный'], функция ($ _, Backbone) { 'использовать строгий'; возвращение { инициализации: функция() { Backbone. history.start(); } }; }); – Marlin

+0

Привет, Марлин. Я не сказал, что файл router.js, который вы обновили, имел ошибку. Я скопировал и вставил ваш код в router.js, и это не решило мою проблему. Я все еще получаю TypeError в консоли. – ltrainpr

-1

Ummmm

require.config({ 
    baseUrl: 'scripts', 

    paths: { 
    app: '../app', 
    jquery: 'jquery', //does this actually point to a jquery source file? 
    underscore: 'underscore', //does this actually point to a underscore source file? 
    backbone: 'backbone', //does this actually point to a backbone source file? 
    router: '../router' 
    }, 

    shim: { 
     backbone: { 
      deps: ['jquery','underscore'], 
      exports: 'Backbone' 
     } 
    } 
}); 

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

мой первый думаю, что в какой-то момент RequireJS необходимо выяснить, где SRC/исполняемые файлы для JQuery, Backbone, Подчеркивание и т. Д.