如何设置 ember 引擎?
How to setup ember engines?
我已经使用 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: '/' });
引擎是 '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.js
和 app/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.
我已经使用 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: '/' });
引擎是 '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.js
和 app/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.