我想在ember-cli中使用Supergroup.js(我使用ember-cli:0.2.7
和ember 1.12.1
)。 Supergroup是作为Underscore或LoDash mixin实现的,因此作者建议首先包含lodash
依赖。
将依赖项添加到bower.json
后:
//bower.json
"dependencies": {
//...
"lodash": "^3.9.3",
"supergroup":"1.0.13"
}
我收到了错误:
Could not find module lodash
// at supergroup.js: "_ = require('lodash');"
作为一种解决方法,我分叉supergroup
,从supergroup.js
删除了以下代码片段:
// if (typeof require !== "undefined") {
// if (typeof underscore !== "undefined" && underscore === "underscore") {
// var _ = require('underscore');
// } else {
// var _ = require('lodash');
// }
// }
并且有效。
我不太了解ember-cli依赖关系是如何工作的,所以我想了解发生了什么以及在没有暴力的情况下安装Supergroup.js的正确方法强制修补,在dependencies
中添加bower.json
(或可能在package.json
中)
答案 0 :(得分:1)
您不必在 bower.json 中包含lodash,它已被指定为超级组中的依赖项。所有作者的意思(我假设)是,就javascript而言,它应首先被包括在内。
这实际上是一个比我想象的复杂得多的问题。基本上 supergroup.js 会尝试确定它是否与AMD模块一起使用,或者不使用您注释掉的代码。
ember-cli通过babel将ES6模块转换为AMD模块。因此,当加载supergroup.js时,它会检测到require
,因此期望lodash
可用。它不是!
因为ember-cli目前无法处理被称为匿名AMD模块的东西:
define([], function() {
return lib;
});
当lodash弄清楚它所处的环境以及如何暴露自己时,它会做什么。
我试图强迫lodash以supergroup.js可以获取的格式提供自己,但我不认为它现在可以在不改变ember-cli,lodash或supergroup的情况下实现。 JS。我真的建议你现在只使用你编辑的版本。导致这种情况的各种相关问题。
参考文献:
答案 1 :(得分:1)
看起来它适用于ember-browserfy
。
npm install --save-dev lodash
npm install --save-dev supergroup
//where needed
import _ from 'npm:supergroup';
且bower.json
,Brocfile.js
和.jshintrc
中没有任何内容!