我用 ember-engines
0.4.0
、ember-cli
2.10.0< 创建了一个独立的可路由引擎
.
如果我调用引擎索引路由 (/thingy/
),我会收到此错误:
断言失败: Assets list 未列出任何可用的包。
消费应用router.js
:
this.mount('thingy-frontend', { as: 'thingy', path: 'thingy' });
引擎应用routes.js
:
this.route('index', { path: '/' });
引擎通过符号链接(symbolic link)“安装”在使用 ember-cli
应用程序的 node_modules/
目录中。 (See here why)。
只是为了好玩,我尝试更改路线以测试它是否有效......
消费应用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
中,我也看不到任何输出。好像根本没有加载。
该设置的灵感来自官方 README 和官方示例库。
知道如何修复此 Ember 引擎设置吗?
您可以在 GitHub 上找到存储库:
最佳答案
我们可以解决这个问题。出现了几个问题,我将与您分享我们所做的:
1。添加 ember-engines 作为依赖项(不仅仅是开发依赖项)
您必须添加 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 中公开和符号链接(symbolic link),您也必须将引擎添加到 package.json
.
在我们的例子中是 "thingy-frontend": "*"
.
别忘了 npm install
.
3。检查符号链接(symbolic link)名称
在我们的例子中,符号链接(symbolic link)具有引擎库的名称,而不是实际的引擎名称。那行不通的。我们改变了
thingy-frontend
的符号链接(symbolic link)名称(这是来自引擎的名称 index.js
)。
4。使用正确的解析器
您必须确保 addon/engine.js
中的两者和 app/resolver.js
使用 ember-resolver
.
5.加载 Assets list 失败。
这可能是 ember-engines
中的错误.有关更多详细信息,请参阅问题:https://github.com/ember-engines/ember-engines/issues/282#issuecomment-268834293
您可以通过手动添加 <meta />
来解决该问题-标记到 <head>
(参见上面的 GitHub 问题链接)
非常感谢Michael Donaldson !
关于javascript - 如何设置 ember 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207713/