Использование mixins с Ember-cli?

У меня есть mixin app/mixins/ui-listener.js, который я пытаюсь использовать с Ember-CLI. Я пытаюсь использовать mixin со следующим синтаксисом:

import ListenerMixin from './mixins/ui-listener';
export default Ember.Component.extend(ListenerMixin,{
    // class definition
}

Это происходит, когда я сохраняю его, жалуясь, что

ENOENT, нет такого файла или каталога 'tmp/tree_merger-tmp_dest_dir-74tK3rvD.tmp/[app-name]/components/mixins/ui-listener.js'

Кажется забавным, что каталог "mixins" вложен в каталог "components" (поскольку Ember-CLI ставит эти каталоги на одном уровне), но это может быть только шаг сборки Brocoli. В любом случае, любая помощь будет принята с благодарностью.

Ответ 1

Я не знаю, как вы экспортируете свой миксин, но это должно работать:

в mixins/ui-listener.js:

import Ember from 'ember';

export default Ember.Mixin.create({
 //some stuff
});

в components/my-component.js:

import Ember from 'ember';
import UIListenerMixin from '../mixins/ui-listener';

export default Ember.Component.extend(UIListenerMixin, {
 // some stuff
});

Ответ 2

Вместо добавления ../ (или даже хуже ../../../) в ваш импорт, вы можете перейти к config/environment.js и проверить свойство modulePrefix. Скажем, префикс app-client.

Затем вы можете импортировать, используя import UIListen from 'app-client/mixins/ui-listener';. Абсолют лучше всего работает, если вы находитесь в "глубокой" подпрограмме и т.д.