Как настроить угольные двигатели?

Я создал автономный маршрутизируемый движок с ember-engines0.4.0, ember-cli2.10.0,

Я получаю эту ошибку, если я вызываю индексный маршрут двигателей (/thingy/):

Assertion Failed: Asset manifest does not list any available bundles.

Потребление приложения router.js:

this.mount('thingy-frontend', { as: 'thingy', path: 'thingy' });

Приложение Engine routes.js:

this.route('index', { path: '/' });

Двигатель "установлен" через символическую ссылку в node_modules/ реж потребителя ember-cli приложение. ( Смотри здесь почему).

Просто для забавы я попытался изменить маршруты, чтобы проверить, работает ли это...

Потребление приложения router.js:

this.mount('thingy-frontend', { as: 'thingy' });

Приложение Engine routes.js:

this.route('index', { path: 'new' });

Я звонил /thingy/new и получил UnrecognizedURLError, Альтернативно, если я называю корневой путь, я получаю Assertion Failed: Asset manifest does not list any available bundles.

Кроме того, если я ставлю console.log('...'); в двигателях index.jsЯ не вижу никаких результатов. Похоже, он не загружен вообще.

Установка была основана на официальном README и официальных репозиториях.

Любая идея, как исправить эту установку Ember Engines?

Вы можете найти репозитории на GitHub:

3 ответа

Решение

Мы могли бы решить проблему. Было несколько проблем, и я поделюсь с вами тем, что мы сделали:

1. Добавьте ember-engine как зависимость (а не просто dev-зависимость)

Вы должны добавитьember-engines как зависимость в package.json как для приложения, так и для двигателя. Таким образом, мы меняем package.json чтобы:

"dependencies": {
  "ember-cli-htmlbars": "^1.0.10",
  "ember-cli-babel": "^5.1.7",
  "ember-data": "^2.10.0",
  "ember-engines": "0.4.0"
}

Не забудь npm install,

2. Добавьте фактический движок в package.json

Даже если он не публичный и не содержит символических ссылок в node_modules, как в нашем случае, вы должны добавить движок к package.json,

В нашем случае это было "thingy-frontend": "*",

Не забудь npm install,

3. Проверьте имя символической ссылки

В нашем случае символическая ссылка имела имя репозитория, а не реальное имя двигателя. Это не сработает. Мы изменили имя символической ссылки на thingy-frontend (это название от двигателей index.js).

4. Используйте правильный распознаватель

Вы должны убедиться, что оба в addon/engine.js и app/resolver.js использовать ember-resolver,

5. Не удалось загрузить манифест актива.

Это, вероятно, ошибка в ember-engines, См. Проблему для получения более подробной информации: https://github.com/ember-engines/ember-engines/issues/282

Вы можете обойти эту проблему, добавив вручную <meta />-Tag к <head> (см. ссылку на выпуск GitHub выше)

Большое спасибо Майклу Дональдсону!

Я не могу найти ссылку на ваше приложение Engine в папке Consuming app package.json. Я думаю, что вы должны добавить в приложение Потребление package.json Engine. Для in-repo-addons - движков, которые я могу найти в демоверсии ember-Engine-Demo, что в package.json они имеют:

"ember-addon": {
    "paths": [
      "lib/ember-chat-engine"
    ]
 }

Не для in-repo-addon, а для обычных модулей:

"dependencies": {
    "ember-data": "^2.6.0",
    "ember-engines": "dgeb/ember-engines#v0.2",
    "ember-blog-engine": "dgeb/ember-blog-engine"
  },

Обратите внимание на ember-blog-engine. Вот полная ссылка на их package.json.

Однако в вашем Package.json в вашем Потребляющем приложении ember-engine-app не указано имя ember-engine-engine.

Ember обрабатывает аддоны из списков package.json, поэтому вам нужно ссылаться на ваш аддон движка. В противном случае вы никогда не получите никакой строки кода из такого пакета, выполненного в среде Ember CLI.

Пожалуйста, добавьте ваш ember-engine-engine в приложение package package.json.

Я бы добавил, что несовместимость также может быть проблемой...

Поскольку Ember Engines является экспериментальным и разрабатывается на основе основных ветвей Ember и Ember-CLI, убедитесь, что вы используете совместимые версии.

Другие вопросы по тегам