通过 JSPM 从 NPM 主干

Backbone from NPM via JSPM

提问人:Jesper Jensen 提问时间:4/26/2015 最后编辑:Ying-Shan LinJesper Jensen 更新时间:6/16/2022 访问量:699

问:

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

jspm install marionette=npm:backbone.marionette

所有依赖项 - jQuery 除外都会自动下载和安装。但是我收到一个运行时错误:

无法调用未定义的 Deferred。

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

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

当在 下运行时,从这里调用 ,很明显,最后一个参数 被遗漏了。当我在 github 上查看主干源代码时,相同的行如下所示:traceurJSfactory-method$

} 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.$  = $

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

jQuery Backbone.js jspm

评论

1赞 Jesper Jensen 4/27/2015
我发现,当前版本的 backbone (1.1.2) 有这个错误,而 github 反映了当前的开发状态(有修复),所以我想这个问题在下一个项目发布时就解决了。对不起,但这个问题,不应该被问到,我不知道如何删除它!
0赞 Jesper Jensen 6/5/2015
Backbone 现在在 1.2.1 版本中,并且正在处理 jquery 依赖项。
5赞 Emile Bergeron 12/22/2016
我认为这是一个很好的问题,看到它获得的选票数量,我不是唯一一个这么认为的人。所以你应该写一个你自己问题的答案并接受它。SO 鼓励这样做。

答: 暂无答案