我正在ember-cli
的帮助下构建一个EmberJS应用程序,这很棒,但我有一个错误,我找不到我做错了什么。
以下是我在西兰花文件中所做的事情:
app.import('vendor/underscore/underscore.js', {
exports: {
"underscore": [
"underscore"
]
}
});
然后在我的一个控制器中:
import _ from "underscore";
ember-cli
构建我的应用程序。
但是当我使用下划线进入控制器时,我收到错误:
错误:找不到模块下划线。
我做错了什么?
答案 0 :(得分:5)
尝试:
app.import({
development: 'vendor/underscore/underscore.js',
production: 'vendor/underscore/underscore.min.js'
}, {
'underscore': [
'default'
]
});
这至少会给“import _ from'下划线';”有机会工作。如果您选择AMD或ES6版本的下划线/ lodash,请列出您要导入的模块为“default”。
编辑:
使用下划线是否至关重要?为什么我问,我正在使用lodash和一个Ember-cli项目,它运行正常。
Console> bower install lodash --save
然后在Brocfile中:
app.import({
development: 'vendor/lodash/dist/lodash.js',
production: 'vendor/lodash/dist/lodash.min.js'
}, {
'lodash': [
'default'
]
});
//or:
app.import('vendor/lodash/dist/lodash.min.js');
至于下划线 - 有an issue没有捆绑devDependencies,其中下划线是一个。
答案 1 :(得分:3)
我从#emberjs IRC的锁上得到了这个。
https://github.com/ef4/ember-browserify
在您的项目中:
npm install --save-dev ember-browserify
npm install --save-dev underscore
在您的控制器中:
import _ from "npm:underscore";
然后你可以使用_。例如:_.each([1,2,3], alert);
。我把手动添加到brocfile和package.json中的所有内容都拿走了。显然这会为你做。疯狂!
答案 2 :(得分:2)
在最新版本的ember中(我使用的是2.11)可以使用
在UMD包装器中加载AMDapp.import('bower_components/js-md5/js/md5.js', {using: [{
transformation: 'amd', as: 'js-md5'
}]});
并在您的代码中
import md5 from 'js-md5';
在您使用下划线的情况下,它应该如下所示:
app.import('vendor/underscore/underscore.js', {using: [{
transformation: 'amd', as: 'underscore'
}]});