2014-12-09 2 views
9

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

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

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

ENOENT, нет такого файла или каталога «TMP/tree_merger-tmp_dest_dir-74tK3rvD .tmp/[приложение-имя] /components/mixins/ui-listener.js'

кажется забавным, что каталог „Примеси“ вложен в каталоге „компоненты“ (как угасающий-CLI помещает эти каталоги на том же уровне), но это может быть только шаг сборки Brocoli. В любом случае, любая помощь будет принята с благодарностью.

+1

'. /' Означает, что этот каталог должен быть '../', вам не хватает '.' –

+0

@BasementKeyboardHero это правильно ... Я использовал пример с веб-сайта, который, по-видимому, должен быть обновлен. – ken

+0

Не могли бы вы сослаться на этот пример –

ответ

14

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

в 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 
}); 
+0

Я приму ваш ответ, когда вы положите его в формате ответа, но на самом деле @BasementKeyboardHero nailed проблема в комментарии выше .. Мне не хватало «..» в моей ссылке. – ken

+3

Не создаются миксины с использованием Ember.Mixin.create (...), а не .extend (...)? – oens

26

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

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

+0

Таким образом, импорт этого пути устранит проблему с вашим пути (./ vs ../ problem) и позаботится о любых других проблемах с пути, с которыми вы могли бы столкнуться в будущем. – teh0xqb

+1

Это потрясающий ответ! Выполнение '/../../../' - это PITA, и я нашел это. Благодаря! – xcskier56

+0

Добро пожаловать :-) – teh0xqb

Смежные вопросы