Backbone.js: `verlängern` undefiniert?

103

Ich fange gerade mit Backbone.js an. Das einfache Einschließen von Backbone (entweder Entwicklungs- / Produktionsversion) verursacht den Fehler:

Uncaught TypeError: Cannot call method 'extend' of undefined in Zeile 128:

// Attach all inheritable methods to the Model prototype
_.extend(Backbone.Model.prototype, Backbone.Events, 
Matt Darby
quelle
Frage: Kombinieren Sie es mit anderen JS-Bibliotheken sowie mit Backbone? Haben Sie versucht zu sehen, ob Sie den Fehler immer noch ohne sie erhalten?
Spudley
Es ist eine brandneue Rails-App. Ich lade nicht einmal jQuery! :)
Matt Darby

Antworten:

216

Das Problem war, dass ich nicht geladen habe underscore.js. Ich habe diese Abhängigkeit in den Dokumenten total vermisst. Duh.

Weitere Klarstellung von @tjorriemorrie: Ich hatte einen Unterstrich, aber in der falschen Reihenfolge geladen, zuerst den Unterstrich laden (denke, das ist, was "Abhängigkeit" bedeutet :)


Weitere Klarstellung für den Fall, dass dies nicht offensichtlich ist. Die Reihenfolge, in der Dinge in JavaScript geladen werden, bezieht sich auf die Reihenfolge, in der sie auf der Seite angezeigt werden. Um zuerst den Unterstrich zu laden, stellen Sie sicher, dass das Skript-Tag einschließlich des vorangestellten Backbones steht. So was:

<script src="underscore-1.4.4-min.js"></script>
<script src="backbone-1.0.0-min.js"></script>
Matt Darby
quelle
2
Vielen Dank, war verwirrt, was ich falsch mache und warum ich nicht einmal das Rückgrat laden kann!
Victor Farazdagi
22
Ich hatte Unterstrich, aber in der falschen Reihenfolge geladen, zuerst Unterstrich laden (denke, das ist, was "Abhängigkeit" bedeutet :)
Tjorriemorrie
11
Über 4.600 Aufrufe und 55 Upvotes später scheinen viele Leute die Anforderungen zu verfehlen. Vielleicht sollten sie ausgeprägter sein.
Xeoncross
@ Matt Darby: Könnten Sie den Kommentar von Tjorriemorrie in die Antwort einfügen?
Summe
2

Die einzige harte Abhängigkeit von Backbone ist, dass Underscore.js Unterstrichskript vor Backbonejs Skript lädt

Somnath Kokane
quelle
1

Die Reihenfolge ist auch wichtig. Ich habe den gleichen Fehler erhalten und er wurde erst behoben, als ich den Unterstrich.js vor backbone.js angegeben habe.

<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>
Haris Np
quelle