Ember.js 如何将Supergroup.js安装为Ember cli依赖项
我想在ember cli中使用(我使用Ember.js 如何将Supergroup.js安装为Ember cli依赖项,ember.js,ember-cli,Ember.js,Ember Cli,我想在ember cli中使用(我使用ember cli:0.2.7和ember 1.12.1)。超群被实现为下划线或LoDash mixin,所以作者建议首先包含LoDash依赖项 将依赖项添加到bower.json后: //bower.json "dependencies": { //... "lodash": "^3.9.3", "supergroup":"1.0.13" } 我得到一个错误: Could not find module lodash // at superg
ember cli:0.2.7
和ember 1.12.1
)。超群被实现为下划线或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.js
中删除了以下代码片段:
// if (typeof require !== "undefined") {
// if (typeof underscore !== "undefined" && underscore === "underscore") {
// var _ = require('underscore');
// } else {
// var _ = require('lodash');
// }
// }
它成功了
我不太了解ember cli依赖项是如何工作的,所以我想了解发生了什么事情,以及如何正确地安装Supergroup.js,而不使用暴力补丁,在
bower.json
中添加依赖项
(或者可能在package.json
)您不必在bower.json中包含lodash,它已经在supergroup中指定为依赖项。作者的意思是(我假设)就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,目前不可能实现。我真的建议你现在就用你编辑过的版本。这是由各种相关问题造成的
参考资料:
ember-browserfy
一起使用
npm install --save-dev lodash
npm install --save-dev supergroup
//where needed
import _ from 'npm:supergroup';
在
bower.json
、Brocfile.js
和.jshintrc
中没有任何内容 谢谢大家!!是否可以对supergroup.js代码进行另一次更正,以便将此更正作为supergroup作者的合理请求提出?(我的更正显然无法提出)@Artych问题其实并不在于supergroup.js(主要是在任何情况下),而是与lodash集成到ember cli。我认为你最好先离开这个问题,直到ember cli完全离开bower,并且匿名amd模块的问题得到解决,然后再讨论它。lodash和ember cli目前都未完成修复ES6模块问题的尝试。ember cli现在支持匿名AMD模块。