如何设置ember引擎?

pho*_*rtx 2 javascript node.js ember.js ember-engines

我已经创建了一个独立的路由引擎ember-engines 0.4.0,ember-cli 2.10.0.

如果我调用引擎索引route(/thingy/),我会收到此错误:

Assertion Failed: Asset manifest does not list any available bundles.

消费App router.js:

this.mount('thingy-frontend', { as: 'thingy', path: 'thingy' });
Run Code Online (Sandbox Code Playgroud)

引擎应用routes.js:

this.route('index', { path: '/' });
Run Code Online (Sandbox Code Playgroud)

通过node_modules/消费ember-cli应用程序目录中的符号链接"安装"引擎.(见这里原因).

只是为了好玩,我试图改变路线,以测试是否有效......

消费App router.js:

this.mount('thingy-frontend', { as: 'thingy' });
Run Code Online (Sandbox Code Playgroud)

引擎应用routes.js:

this.route('index', { path: 'new' });
Run Code Online (Sandbox Code Playgroud)

我打电话给/thingy/new了一个UnrecognizedURLError.另外,如果我调用根路径,我会得到一个Assertion Failed: Asset manifest does not list any available bundles.

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

该设置的灵感来自官方README和官方示例回购.

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

你可以在GitHub上找到回购:

pho*_*rtx 6

我们可以解决这个问题.有几个问题,我将与您分享我们做了什么:

1.添加ember-engines作为依赖(不仅仅是dev-dependency)

您必须在应用程序和引擎中添加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"
}
Run Code Online (Sandbox Code Playgroud)

别忘了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!