2011-02-02 5 views
101

Appena iniziato con Backbone.js. Semplicemente compresi (versioni sia dev/produzione) Backbone causa l'errore:Backbone.js: `extend` undefined?

Uncaught TypeError: Cannot call method 'extend' of undefined sulla linea 128:

// Attach all inheritable methods to the Model prototype 
_.extend(Backbone.Model.prototype, Backbone.Events, 
+0

Domanda: La stai combinando con altre librerie JS e con Backbone? Hai provato a vedere se ottieni ancora l'errore senza di loro? – Spudley

+0

È una nuovissima app Rails; Non sto nemmeno caricando jQuery! :) –

+2

Mi piace che questa sia una delle domande più votate nel tag backbone.js – theycallmemorty

risposta

211

Il problema era che non stava caricando underscore.js. Ho totalmente perso quella dipendenza nei documenti. Duh.

ulteriori chiarimenti @tjorriemorrie: avevo sottolineare, ma caricati in ordine errato, primo carico di sottolineatura (indovinate che è quello che 'dipendenza' significa :)


ulteriori chiarimenti nel caso in cui questo isn è ovvio L'ordine in cui le cose sono caricate in JavaScript si riferisce all'ordine in cui appaiono nella pagina. Per caricare prima il carattere di sottolineatura, assicurarsi che il tag dello script che lo include venga prima del backbone di caricamento. Come questo:

<script src="underscore-1.4.4-min.js"></script> 
<script src="backbone-1.0.0-min.js"></script> 
+2

Grazie mille, sono rimasto perplesso su quello che sto facendo male e perché non riesco nemmeno a caricare la spina dorsale! –

+22

Avevo il carattere di sottolineatura, ma caricato nell'ordine errato, prima caricare il carattere di sottolineatura (suppongo che si tratti di 'dipendenza' :) – Tjorriemorrie

+11

4.600+ visualizzazioni e 55 revisioni successive sembra che a molte persone mancano i requisiti. Forse dovrebbero essere più pronunciati. – Xeoncross

2

Backbone solo la dipendenza difficile è Underscore.js carico underscorejs script prima backbonejs sceneggiatura

1

L'ordine è anche importante. Ho ricevuto lo stesso errore e non è stato risolto fino a quando ho dato underscore.js prima di backbone.js.

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js" type="text/javascript"></script> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js" type="text/javascript"></script>