Как импортировать amd-модуль в ember-cli?
Я создаю приложение EmberJS с большой помощью ember-cli
, что здорово, но у меня есть ошибка, и я не могу найти то, что делаю неправильно.
Вот что я делаю в моем файле брокколи:
app.import('vendor/underscore/underscore.js', {
exports: {
"underscore": [
"underscore"
]
}
});
а затем в одном из моих контроллеров:
import _ from "underscore";
ember-cli
создает мое приложение.
Но когда я иду к контроллеру с использованием подчеркивания, я получаю сообщение об ошибке:
Ошибка: не удалось найти подчеркивание модуля.
Что я делаю неправильно?
Ответы
Ответ 1
Try:
app.import({
development: 'vendor/underscore/underscore.js',
production: 'vendor/underscore/underscore.min.js'
}, {
'underscore': [
'default'
]
});
Это, по крайней мере, даст "import_ from" underscore "; шанс работать. Если вы выберете версию underscore/lodash для AMD или ES6, укажите, какие модули вы хотите импортировать с" по умолчанию".
EDIT:
Важно ли использовать подчеркивание? Почему я спрашиваю, я использую 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');
Что касается подчеркивания - была проблема , в которой не были связаны devDependencies, среди которых подчеркивание - одно.
Ответ 2
Я получил это от блокировок на IRB #emberjs.
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. Видимо, это сделает это за вас. Сумасшедший!
Ответ 3
В последних версиях ember (я использую 2.11) можно загружать AMD в обертки UMD, используя
app.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'
}]});