Angular 如何将文件夹添加到SystemJS配置映射?
我正在尝试使用TS和SystemJS的angular 2。 我想在Angular 如何将文件夹添加到SystemJS配置映射?,angular,typescript,systemjs,Angular,Typescript,Systemjs,我正在尝试使用TS和SystemJS的angular 2。 我想在system.config.js中映射我的一个文件夹 |_ app | |_ standalone | | |_ rest.service.js | | |_ rest.service.js.map | | |_ rest.service.ts | |_ app.module.ts |_ node_modules |_ system.config.js 这是我在system.config.js中的一个简
system.config.js
中映射我的一个文件夹
|_ app
| |_ standalone
| | |_ rest.service.js
| | |_ rest.service.js.map
| | |_ rest.service.ts
| |_ app.module.ts
|_ node_modules
|_ system.config.js
这是我在system.config.js
中的一个简化版本:
System.config({
paths: {
'npm:': 'node_modules/'
},
map: {
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'rxjs': 'npm:rxjs',
'stalone': 'app/standalone'
},
packages: {
app: {
main: './main.js',
defaultExtension: 'js'
},
stalone: {
defaultExtension: 'js'
},
rxjs: {
defaultExtension: 'js'
}
}
});
})(this);
我在app.module.ts中的两个导入是:
import { RestService } from "stalone/rest.service";
import { NgModule } from "@angular/core";
“@angular.core”导入时没有问题,但导入“stalone/rest.service”时,我得到错误:
Cannot find module 'stalone/rest.service'.
我只包括了我认为与此事有关的文件。如果我遗漏了任何错误,请告诉我。如果在typescript编译过程中出现此错误,请添加:
"compilerOptions": {
...
"paths": {
"standalone/*": [ "app/standalone/*" ]
}
}
到您的tsconfig.json
注意:您需要TypeScript版本2.0或更高版本。尝试这样做。'stalone':'./app/standalone'TypeScript在编译期间未使用
system.js
。如果我理解正确,您在编译期间会遇到此错误,因此这实际上意味着TypeScript
无法找到您的模块,而不是在运行时找到的system.js
它确实适用于angular,因为typescript正在所有找到它的node\u模块
文件夹下查找文件,但这不适用于您,因为您的模块不在node\u模块
下
这就是为什么您需要告诉ts编译器在哪里可以找到您的模块,如下所示:
{
"compilerOptions": {
"paths": {
"stalone/*": ["app/standalone/*"]
}
}
为了更详细地了解所有这些是如何工作的,您应该真正检查typescript的模块解析文档。我也遇到了同样的问题,还没有运气。如果我发现有用的东西,我会告诉你的!我不确定映射会有什么帮助,因为您在app下,可以使用“/standalone/rest.service”导入{RestService}从“/standalone/rest.service”导入app.module.ts。SystemJS需要一个模块。