我已经使用ember-engines
0.4.0
,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中的Symlink"安装"引擎。(请参阅此处)。
只是为了娱乐,我试图更改测试是否有效的路线...
消费应用router.js
:
this.mount('thingy-frontend', { as: 'thingy' });
引擎应用routes.js
:
this.route('index', { path: 'new' });
我已经打电话给/thingy/new
并获得了UnrecognizedURLError
。替代方案,如果我称重点路径,我会得到Assertion Failed: Asset manifest does not list any available bundles.
另外,如果我将console.log('...');
放置在引擎index.js
中,我看不到任何输出。似乎根本没有加载。
设置的灵感来自正式的读书文件和官方示例存储库。
任何想法如何修复此Ember引擎设置?
您可以在github上找到回购:
- 引擎:https://github.com/phortx/ember-engines-engine-engine
- 用readme消费应用程序:https://github.com/phortx/ember-engines-app
我们可以解决问题。有几个问题,我将与您分享我们的所作所为:
1。添加ember-engines作为依赖性(不仅是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。将实际引擎添加到包装中。JSON
即使它不公开并在Node_modules中进行了链接,您也必须将引擎添加到package.json
中。
在我们的情况下,这是"thingy-frontend": "*"
。
别忘了 npm install
。
3。检查Symlink名称
在我们的情况下,Symlink具有引擎存储库的名称,而不是实际的引擎名称。那行不通。我们改变了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#issuecomment-268834293
您可以通过手动将<meta />
-TAG添加到<head>
(请参阅上面的GitHub问题链接)
非常感谢Michael Donaldson!
我从消耗应用程序package.json中找不到对您的引擎应用程序的引用。我认为您应该添加到消耗podpack.json Engine应用程序中。对于repo-addons-我在ember-engines-demo中可以找到的发动机。
"ember-addon": {
"paths": [
"lib/ember-chat-engine"
]
}
对于不进行repo-addon,但对于普通模块,它们具有:
"dependencies": {
"ember-data": "^2.6.0",
"ember-engines": "dgeb/ember-engines#v0.2",
"ember-blog-engine": "dgeb/ember-blog-engine"
},
请注意Ember-B-B-Gongine。这是对他们的包装的完整引用。
但是,在您的消费ember-engines-app应用程序包中。ember-ingines-engine name。
ember流程插件来自package.json列表,因此您必须在此处引用引擎插件。否则,您将永远不会从Ember CLI环境中执行的此类软件包获得任何代码。
请添加您的ember-engines-engine到消费应用程序包。
我会补充说不兼容也可能是一个问题...
由于Ember发动机是实验性的,并且是针对Ember和Ember-CLI的主分支开发的,请确保您使用兼容版本。