Backbone.js: `exte` не визначено?


103

Початок роботи з Backbone.js. Просто включення Backbone (або версії розробника / виробництва) викликає помилку:

Uncaught TypeError: Cannot call method 'extend' of undefined на лінії 128:

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

Запитання: Чи поєднуєте ви це з будь-якими іншими бібліотеками JS, а також Backbone? Ви спробували побачити, чи все-таки ви отримуєте помилку без них?
Спудлі

Це абсолютно новий додаток Rails; Я навіть не завантажую jQuery! :)
Метт Дарбі

Відповіді:


216

Проблема полягала в тому, що я не завантажувався underscore.js. Я цілком пропустив цю залежність у документах. Дух.

Подальше уточнення від @tjorriemorrie: Я підкреслив, але завантажив у неправильному порядку, спочатку завантажуйте підкреслення (здогадайтесь, що означає "залежність" :)


Подальше уточнення на випадок, якщо це не очевидно. Порядок завантаження речей у JavaScript пов'язаний із порядком відображення на сторінці. Щоб завантажити підкреслення спочатку, переконайтеся, що тег сценарію, включаючи його, знаходиться перед однією завантажувальною магістраллю. Подобається це:

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

2
Велике спасибі, було спантеличено, що я роблю неправильно, і чому я навіть не можу навантажити хребет!
Віктор Фараздагі

22
У мене було підкреслення, але завантажено в неправильному порядку, спочатку завантажте підкреслення (здогадайтесь, що це означає "залежність" :)
Tjorriemorrie

11
4600+ переглядів і 55 оновлень пізніше здається, що багато людей не вистачають вимог. Можливо, вони повинні бути більш вираженими.
Xeoncross

@Matt Darby: ви могли б додати коментар від Tjorriemorrie у відповідь?
sumid

2

Важкою залежністю є лише хребта - це Underscore.js завантаження сценарію підкреслення перед сценарієм backbonejs


1

Порядок також важливий. Я отримав таку ж помилку, і вона не була вирішена, поки я не подав underscore.js перед 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.