26

我正在尝试使用 JSPM 从 NPM 安装主干.marionette 以解决客户端依赖关系。在命令提示符中使用以下命令进行简单操作:

jspm 安装木偶=npm:backbone.marionette

所有依赖项 - 除了 jquery 会自动下载和安装。但我得到一个运行时错误:

无法调用未定义的 Deferred。

我正在查看代码,发现问题出在主干源代码第 9、10 和 11 行

} else if (typeof exports !== 'undefined') {
  var _ = require("underscore");
  factory(root, exports, _);

在 下运行时traceurJSfactory-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.$  = $

我不喜欢这个,尽管它有效,因为它是一种解决方法,而且它似乎“不存在”。

4

0 回答 0