我有一个使用WebPack构建的小型Aurelia应用程序。在我的 src 文件夹下,我有 util index.ts.ts 的文件夹。在 main.ts 我这样打开功能:
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"
]);
}
转换器和 REST 是 util 的typescript模块。
我正在遵循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
感谢您的建议。
看一下:https://github.com/aurelia/templating-resources/blob/master/src/aurelia-templating-resources.js
编辑:
我已经工作了。关键是您需要专门在每条路径上明确调用PLATFORM.moduleName('./relative/path/to/file')
,并且需要从文件(实际上是相同的目录,但仍然...(来调用config.globalResources()
。
换句话说,您无法捷径以下代码:
config.globalResources(
PLATFORM.moduleName('./resource1'),
PLATFORM.moduleName('./resource2')
);
不要尝试将资源映射到platform.modulename或动态构建文件名。
您应该将路径 PLATFORM.moduleName("util")
更改为platform.modulename(" ./util"(。然后,您可以使用相对于util
文件夹的路径来注册globalResources
。另外,您可以在这里查看样本项目结构。另外,请参见此行,Aurelia(如果不包括在内(,则将/index
添加到ModuleName中。
如果您已经尝试使用Aurelia CLI,则src/resources
下的创建项目被注册为功能。