我正在使用TS和SystemJS尝试角度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({
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'.
我只包含了我认为与此相关的文件。如果我错过了,请告诉我。
答案 0 :(得分:1)
在编译期间,Typescript没有使用system.js
。如果我理解正确,那么在编译期间会出现此错误,这实际上意味着TypeScript
找不到您的模块,而不是system.js
将在运行时执行此操作。
它确实适用于angular,因为typescript正在查找找到它的所有node_modules
文件夹下的文件,但这对您不起作用,因为您的模块不在node_modules
下。
这就是为什么你需要告诉ts编译器在哪里找到你的模块,如下所示:
{
"compilerOptions": {
"paths": {
"stalone/*": ["app/standalone/*"]
}
}
要了解所有这些在更多细节中的工作原理,您应该检查一下打字稿here的模块解析文档。
答案 1 :(得分:0)
如果在打字稿编译过程中出现此错误,请添加:
"compilerOptions": {
...
"paths": {
"standalone/*": [ "app/standalone/*" ]
}
}
到你的tsconfig.json
注意:您需要TypeScript版本2.0或更高版本。
答案 2 :(得分:0)
尝试这样'stalone': './app/standalone'