我有一个用Webpack构建的小型Aurelia应用程序。在我的 src 文件夹下,我有 util
import { Aurelia, PLATFORM } from "aurelia-framework";
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature(PLATFORM.moduleName("util"));
aurelia.start().then(() => aurelia.setRoot(PLATFORM.moduleName("app")));
}
UTIL / index.ts :
import { FrameworkConfiguration } from 'aurelia-framework';
export function configure(config: FrameworkConfiguration): void {
config.globalResources([
"./converters",
"./rest"
]);
}
util 下的Typescript模块转换器和 rest 。
我按照Aurelia Hub的说明进行操作。
当我在浏览器中打开应用程序时,我看到以下错误:
Uncaught (in promise) Error: Unable to find module with ID: util/index
at WebpackLoader.<anonymous> (aurelia-loader-webpack.js:187)
at step (aurelia-loader-webpack.js:36)
at Object.next (aurelia-loader-webpack.js:17)
at aurelia-loader-webpack.js:11
at Promise (<anonymous>)
at webpackJsonp.64.__awaiter (aurelia-loader-webpack.js:7)
at WebpackLoader.webpackJsonp.64.WebpackLoader._import (aurelia-loader-webpack.js:152)
at WebpackLoader.<anonymous> (aurelia-loader-webpack.js:252)
at step (aurelia-loader-webpack.js:36)
at Object.next (aurelia-loader-webpack.js:17)
如果我直接引用模块而不是功能,例如
import { Rest } from '../util/rest';
然后我没有错误,应用程序加载成功。但我希望这些模块在全球范围内可用。
使用 aurelia-webpack-plugin 版本 2.0.0-rc.2
非常感谢您的建议。
答案 0 :(得分:4)
看看这个: https://github.com/aurelia/templating-resources/blob/master/src/aurelia-templating-resources.js
编辑:
我已经开始工作了。关键是你需要在每个路径上明确地调用PLATFORM.moduleName('./relative/path/to/file')
,并且需要从调用config.globalResources()
的文件(实际上在技术上相同的目录,但仍然......)中调用。 / p>
换句话说,您无法快速执行以下代码:
config.globalResources(
PLATFORM.moduleName('./resource1'),
PLATFORM.moduleName('./resource2')
);
请勿尝试将资源映射到PLATFORM.moduleName或动态构建文件名。
答案 1 :(得分:0)
您应该将路径PLATFORM.moduleName("util")
更改为PLATFORM.moduleName(“./ util”)。然后,您就可以使用相对于util
文件夹的路径来注册globalResources
。您还可以查看here示例项目结构。另请参阅此line代码,如果未包含,则aurelia会将/index
添加到moduleName,因为它基于约定。
如果您已尝试使用aurelia CLI,则src/resources
下的已创建项目会被注册为功能。