Aurelia 在使用变量的 setRoot 时找不到具有 ID 的模块

Posted

技术标签:

【中文标题】Aurelia 在使用变量的 setRoot 时找不到具有 ID 的模块【英文标题】:Aurelia Unable to find module with ID when setRoot with variable 【发布时间】:2017-09-04 22:41:54 【问题描述】:

我正在尝试按照这个示例说明如何在多页应用程序中使用 aurelia。

http://patrickwalters.net/creating-multipage-apps-using-aurelia-2/

当我这样做时

  aurelia.start().then(a => 
    let start = 'app'
    a.setRoot(start);
  );

我收到以下错误:

无法找到 ID 为 app 的模块

我已经使用 require 完成了这项工作。也许与 webpack 有关? 在示例中,'start' 从 body 元素接收一个字符串,我只是想让它易于理解

【问题讨论】:

【参考方案1】:

Webpack 要求您使用 PLATFORM.moduleName 来声明您的模块名称,请参阅文档:https://github.com/aurelia/webpack-plugin/wiki/Managing-dependencies

所以你需要写

import  PLATFORM  from "aurelia-pal";
...

aurelia.start().then(a => 
    let start = PLATFORM.moduleName('app');
    a.setRoot(start);
  );

【讨论】:

如示例所示,值 'app' 需要来自 a.host.attributes.start.value 并且即使使用 PLATFORM.moduleName 也不起作用,例如(使用 TS)a。 setRoot(PLATFORM.moduleName(a.host.attributes.getNamedItem('start').value))

以上是关于Aurelia 在使用变量的 setRoot 时找不到具有 ID 的模块的主要内容,如果未能解决你的问题,请参考以下文章

Aurelia 使用模板字符串动态绑定变量

使用带有 DataDriver 库的 Robot Framework 时找不到变量“$username”

在使用 setRoot 时渲染 flash 或推入反应原生导航

带有角度路由器的 Ionic 4 setRoot

javascript使用setTimeoutsetInterval时找不到变量的问题

如何在 Aurelia 中导入和使用 RobinHerbots 的 Inputmask