我发现我正在慢慢地挖掘自己的坟墓,因为我的文件夹结构越深入,每次我需要从我的根组件导入模块时,我必须走得越远:
import {ComponentsModule, SharedModule} from '../../../../../../shared';
由于该视图也有子视图,因此它会变得更长。
我查看了this question,这表明目前使用Angular 2是不可能的。然而,对我来说似乎很奇怪,没有办法实现这样的事情:
import {ComponentsModule, SharedModule} from 'src/app/shared';
这是将来会出现的功能还是已经可以用某种方式实现?
编辑:根据@ Sasxa的建议,我这样做了:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*"
]
},
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}
但是现在当我尝试启动Angular CLI时,我遇到了一大堆错误,主要是错误:ERROR in Entry module not found: Error: Recursion in resolving
和ERROR in multi main Module not found: Error: Recursion in resolving
。
缺少什么?
答案 0 :(得分:2)
似乎可以使用paths
中的baseUrl
和tsconfig.json
编译器选项来完成此操作。 https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping
以下是文档中的示例:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*",
"generated/*"
]
}
}
}
这告诉编译器任何与模式匹配的模块导入" *" (即所有值),查看两个位置:
- " *":意思是同一个名字不变,所以map => \
- "生成*"意思是模块名称带有附加前缀“generated”,所以map => \生成\
应该在TypeScript 1.9 +
中可用我刚尝试过:添加"baseUrl": "."
允许我在我的应用中的任何位置import {...} from 'app/shared'
(我的tsconfig.json
位于src\
文件夹中)。编译没有任何错误,并与Angular CLI一起使用。