如何设置余烬引擎?
我创build了一个独立的可路由引擎,其中ember-engines
0.4.0
ember-engines
, ember-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.js
和app/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的主分支机构开发,请确保您使用的是兼容版本 。