2013-12-16 23 views
6

Używam jquery, backbonejs, underscorejs i bootstrap dla mojego projektu firmy. Czasami mam ten błąd w chrome.Bootstrap - Uncaught TypeError: Nie można odczytać właściwości 'fn' z undefined

Uncaught TypeError: Cannot read property 'fn' of undefined

Moja podkładka jest podobny do tego w moich main.js

require.config({ 
paths: { 
    jquery: 'libs/jquery/jquery', 
    underscore: 'libs/underscore/underscore', 
    backbone: 'libs/backbone/backbone', 
    backboneeventbinder: 'libs/backbone.eventbinder.min', 
    bootstrap: 'libs/bootstrap', 
    jquerytablesorter: 'libs/tablesorter/jquery.tablesorter', 
    tablesorter: 'libs/tablesorter/tables', 
    ajaxupload: 'libs/ajax-upload', 
    templates: '../templates' 
}, 
shim: { 
    'backbone': { 
     deps: ['underscore', 'jquery'], 
     exports: 'Backbone' 
    }, 
    'underscore': { 
     exports: '_' 
    }, 
} 
}); 
require(['app', ], function(App) { 
    App.initialize(); 
}); 

już wstawić .noConflict() dla jQuery underscore.js i backbone.js.

Moi app.js

// Filename: app.js 
define(['jquery', 'underscore', 'backbone', 'backboneeventbinder', 'bootstrap', 'ajaxupload', 'router', // Request router.js 
], function($, _, Backbone, Bootstrap, Backboneeventbinder, Ajaxupload, Router) { 
    $.noConflict(); 
    _.noConflict(); 
    Backbone.noConflict(); 
    var initialize = function() { 
      Router.initialize(); 
     }; 
    return { 
     initialize: initialize 
    }; 
}); 

To jest zrzut ekranu z mojego chrom enter image description here

swoim rodzaju, takie jak związane startowej.

Dziękuję bardzo z góry.

+0

Jak korzystać z opcji "noConflict"? –

+0

Ta [odpowiedź] (http://stackoverflow.com/a/11184070/122005) może być użyteczna – chridam

Odpowiedz

19

Potrzebuję załadować jquery najpierw przed bootstrap.

require.config({ 
    paths: { 
     jquery: 'libs/jquery/jquery', 
     underscore: 'libs/underscore/underscore', 
     backbone: 'libs/backbone/backbone', 
     bootstrap: 'libs/bootstrap', 
     jquerytablesorter: 'libs/tablesorter/jquery.tablesorter', 
     tablesorter: 'libs/tablesorter/tables', 
     ajaxupload: 'libs/ajax-upload', 
     templates: '../templates' 
    }, 
    shim: { 
     'backbone': { 
      deps: ['underscore', 'jquery'], 
      exports: 'Backbone' 
     }, 
     'jquery': { 
      exports: '$' 
     }, 
     'bootstrap': { 
      deps: ['jquery'], 
      exports: '$' 
     }, 
     'jquerytablesorter': { 
      deps: ['jquery'], 
      exports: '$' 
     }, 
     'tablesorter': { 
      deps: ['jquery'], 
      exports: '$' 
     }, 
     'ajaxupload': { 
      deps: ['jquery'], 
      exports: '$' 
     }, 
     'underscore': { 
      exports: '_' 
     }, 
    } 
}); 
require(['app', ], function(App) { 
    App.initialize(); 
}); 

Naprawiono za pomocą czaru !!

+0

Prawda, że ​​musisz najpierw załadować jquery: D – Fiido93

0
//Call .noConflict() to restore JQuery reference. 

jQuery.noConflict(); OR $.noConflict(); 

//Do something with jQuery. 

jQuery("div.class").hide(); OR $("div.class").show(); 
+0

powinieneś określić, kiedy wywołać 'noConflict()': zaraz po włączeniu jQuery. http://api.jquery.com/jQuery.noConflict/ – TheBronx

+0

to nie działa –