如何设置 ember 引擎?

How to setup ember engines?

我已经使用 ember-engines 0.4.0ember-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: '/' });

引擎是 'installed' 通过消费 ember-cli 应用的 node_modules/ 目录中的符号链接。 ().

只是为了好玩,我尝试更改路线以测试它是否有效...

正在使用应用 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.

此外,如果我在引擎 index.js 中放置一个 console.log('...');,我也看不到任何输出。好像根本没有加载。

该设置的灵感来自官方 README 和官方示例库。

知道如何修复此 Ember 引擎设置吗?

您可以在 GitHub:

上找到 repos

我无法从消费应用程序中找到对您的引擎应用程序的引用 package.json。我认为您应该添加到 Consuming package.json Engine 应用程序。对于 in-repo-addons - 我可以在 ember-engines-demo 中找到的引擎在 package.json 中有:

"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-博客引擎。这是他们 package.json.

的完整参考

但是在您的 Consuming ember-engines-app 应用程序 package.json 中没有列出 ember-engines-引擎名称。

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

请将您的 ember-engines-engine 添加到消费应用 package.json。

我们可以解决这个问题。出现了几个问题,我将与您分享我们所做的:

1。添加 ember-engines 作为依赖项(不仅仅是开发依赖项)

您必须在 package.json 中为应用程序和引擎添加 ember-engines 作为依赖项。所以我们改变 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 和 symlinked,您也必须将引擎添加到 package.json.

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

别忘了npm install

3。检查 symlink name

在我们的例子中,symlink 具有引擎存储库的名称,而不是实际的引擎名称。那行不通的。我们改变了 thingy-frontend 的 symlink 名称(这是来自引擎 index.js 的名称)。

4。使用正确的解析器

您必须确保在 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 问题 link)

非常感谢Michael Donaldson

我要补充一点,不兼容 也可能是个问题...

由于 Ember 引擎是实验性的,并且正在针对 Ember 和 Ember-CLI 的主分支进行开发,请确保您使用的是 compatible versions.