我使用.gitignore
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: '/' });
应用的node_modules/
目录中的符号链接。 (See here why)。
为了好玩,我试图改变路线以测试它是否有效......
使用应用ember-cli
:
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('...');
,我也看不到任何输出。好像它根本没有加载。
该设置的灵感来自官方README和官方示例回购。
知道如何修复此Ember引擎设置吗?
你可以在GitHub上找到回购:
答案 0 :(得分:6)
我们可以解决这个问题。有几个问题,我将与您分享我们所做的事情:
您必须在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
。
即使它在node_modules中不是公共的和符号链接的,就像我们的情况一样,你必须将引擎添加到package.json
。
在我们的案例中,这是"thingy-frontend": "*"
。
不要忘记npm install
。
在我们的例子中,符号链接具有引擎repo的名称而不是实际的引擎名称。那不行。我们换了
符号链接名称为thingy-frontend
(这是引擎index.js
的名称)。
您必须确保addon/engine.js
和app/resolver.js
都使用ember-resolver
。
这可能是ember-engines
中的错误。有关详细信息,请参阅问题:https://github.com/ember-engines/ember-engines/issues/282#issuecomment-268834293
您可以通过手动向<meta />
添加<head>
- 标记来解决该问题(请参阅上面的GitHub问题链接)
非常感谢Michael Donaldson!
答案 1 :(得分:4)
我无法从Consuming app package.json中找到对您的引擎应用的引用。我认为你应该添加到Consuming package.json Engine应用程序。对于in-repo-addons - 我可以在ember-engines-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。
然而,在您的消费中,ember-engines-app应用package.json未列出 ember-engines-engine名称。
Ember处理来自package.json列表的插件,因此您必须在那里引用您的引擎插件。否则,您将永远不会从Ember CLI环境中执行此类包中获得任何代码行。
请将您的ember-engines-engine添加到使用app package.json。
答案 2 :(得分:0)
我补充说不兼容也可能是一个问题......
由于Ember Engines是实验性的,并且是针对Ember和Ember-CLI的主要分支进行开发的,因此请确保使用 compatible versions 。