【问题标题】:How to setup ember engines?如何设置 ember 引擎?
【发布时间】:2016-12-18 11:05:49
【问题描述】:

我用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/ 目录中的符号链接“安装”的。 (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.

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

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

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

你可以在 GitHub 上找到 repos:

【问题讨论】:

    标签: javascript node.js ember.js ember-engines


    【解决方案1】:

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

    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 中公开和符号链接,您也必须将引擎添加到 package.json

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

    别忘了npm install

    3。检查符号链接名称

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

    4。使用正确的解析器

    您必须确保在addon/engine.jsapp/resolver.js 中都使用ember-resolver

    5。未能加载资产清单。

    这可能是ember-engines 中的一个错误。更多详情请查看问题:https://github.com/ember-engines/ember-engines/issues/282#issuecomment-268834293

    您可以通过手动将 <meta />-Tag 添加到 <head> 来解决该问题(请参阅上面的 GitHub 问题链接)

    非常感谢Michael Donaldson

    【讨论】:

      【解决方案2】:

      我在 Consuming app package.json 中找不到对您的 Engine 应用的引用。我认为您应该添加到 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-引擎名称。

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

      请将您的 ember-engines-engine 添加到使用应用程序 package.json。

      【讨论】:

      • 遇到了这个问题,因为我通过复制现有引擎的文件而不是使用 ember generate in-repo-addon 创建了一个 in-repo-addon :/
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        相关资源
        最近更新 更多