Как импортировать 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' 
}]});