Я пытаюсь установить backbone.marionette из NPM с JSPM для разрешения зависимостей клиента. Простая операция со следующей командой в commandprompt:
jspm install marionette = npm: backbone.marionette
Все зависимости - за исключением того, что jquery автоматически загружается и устанавливается. Но я получаю ошибку времени выполнения: "Не удается вызвать" Отложен "из undefined". Я искал код, и я обнаружил, что проблема была в исходной кодовой строке 9, 10 и 11
} else if (typeof exports !== 'undefined') {
var _ = require("underscore");
factory(root, exports, _);
При запуске под traceurJS здесь вызывается метод factory, и ясно, что последний аргумент $, не учитывается. Когда я смотрю в базовом исходном коде на github, те же строки выглядят следующим образом:
} else if (typeof exports !== 'undefined') {
var _ = require('underscore'), $;
try { $ = require('jquery'); } catch(e) {}
factory(root, exports, _, $);
Здесь зависимость jquery добавлена с опцией (try/catch). Я должен добавить здесь, что версия NPM отмечена той же версией, что и github - 1.1.2. Почему разница? Кажется, что это было проблемой в течение некоторого времени, так как опубликовано несколько рабочих мест, таких как добавление этого кода:
$ = require('jquery');
Backbone = require('backbone');
Backbone.$ = $
Мне это не нравится, хотя он работает, потому что это обходной путь, и кажется, что он "не существует".