我正在尝试使用 JSPM 从 NPM 安装主干.marionette 以解决客户端依赖关系。在命令提示符中使用以下命令进行简单操作:
jspm 安装木偶=npm:backbone.marionette
所有依赖项 - 除了 jquery 会自动下载和安装。但我得到一个运行时错误:
无法调用未定义的 Deferred。
我正在查看代码,发现问题出在主干源代码第 9、10 和 11 行
} else if (typeof exports !== 'undefined') {
var _ = require("underscore");
factory(root, exports, _);
在 下运行时traceurJS
,factory-method
从这里调用 ,很明显,最后一个参数$
被省略了。当我查看 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.$ = $
我不喜欢这个,尽管它有效,因为它是一种解决方法,而且它似乎“不存在”。