如何设置Ember引擎



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

通过消耗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.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!

我从消耗应用程序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的主分支开发的,请确保您使用兼容版本

相关内容

  • 没有找到相关文章

最新更新