如何设置余烬引擎?

我创build了一个独立的可路由引擎,其中ember-engines 0.4.0 ember-enginesember-cli 2.10.0

我得到这个错误,如果我打电话引擎索引路线( /thingy/ ):

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

消费应用程序router.js

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

引擎应用程序routes.js

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

这个引擎是通过消费性ember-cli应用程序的node_modules/ dir中的符号链接“安装”的。 ( 见这里为什么 )。

只是为了好玩,我试图改变路线来testing是否有效…

消费应用程序router.js

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

引擎应用程序routes.js

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

我打电话给/thingy/new并得到一个UnrecognizedURLError 。 另外,如果我调用根path,我得到一个Assertion Failed: Asset manifest does not list any available bundles.

另外,如果我把一个console.log('...'); 在引擎index.js ,我看不到任何输出。 看起来好像根本没有加载。

该设置受官方README和官方示例回购的启发。

任何想法如何解决这个Ember引擎设置?

你可以在GitHub上findRepos:

  • 引擎: https : //github.com/phortx/ember-engines-engine
  • 使用README消费应用程序: https : //github.com/phortx/ember-engines-app

我们可以解决这个问题。 有几个问题,我会与你分享我们做了什么:

1.将ember-engines添加为依赖项(而不仅仅是dev-dependency)

您必须将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中是public和symlink,你必须将引擎添加到package.json

在我们的例子中,这是"thingy-frontend": "*"

不要忘记npm install

3.检查符号链接名称

在我们的例子中,符号链接有引擎回购的名称,而不是实际的引擎名称。 这是行不通的。 我们把symlink的名字改成了thingy-frontend (这是引擎index.js的名字)。

4.使用正确的parsing器

你必须确保,在addon/engine.jsapp/resolver.js使用了ember-resolver

5.加载资产清单失败。

这可能是一个ember-engines的错误。 看到问题的更多细节: https : //github.com/ember-engines/ember-engines/issues/282#issuecomment-268834293

您可以通过手动向<head>添加<meta /> -Tag来解决该问题(请参阅上面的GitHub问题链接)

非常感谢迈克尔·唐纳森 !

我从Consuming app package.json找不到引用您的Engine应用程序。 我想你应该添加到消费package.json引擎应用程序。 对于in-repo-addons-引擎,我可以在ember-engines-demo中find它在package.json中有:

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

对于不在回购插件,但对于正常的模块,他们有:

 "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的完整引用。

然而在你的消费ember-engines-app app package.json中并没有列出ember-engines-engine的名字。

Ember处理来自package.json列表的插件,所以你必须在那里引用你的引擎插件。 否则,您将永远不会从Ember CLI环境中执行的此类包中获取任何代码行。

请添加您的烬引擎引擎消费应用程序package.json。

我会补充说不兼容性也可能是一个问题…

由于Ember引擎是实验性的,正在针对Ember和Ember-CLI的主分支机构开发,请确保您使用的是兼容版本

Interesting Posts