Doc*_*Doc 5 typescript tsconfig visual-studio-code vscode-settings angular
我正在尝试使用桶和tsconfigs paths选项导入一些服务,但我无法获得角度和vscode相处.
如果它适用于一个它不适用于另一个,反之亦然......
我的情况似乎很简单:
src/app/services我有一个服务,它在index.ts中导出src/tsconfig.app.json就是这样:{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": [],
"baseUrl": ".",
"paths": {
"services": ["app/services"]
}
},
"exclude": [
"test.ts",
"**/*.spec.ts"
],
}
Run Code Online (Sandbox Code Playgroud)
和我的角度应用没有问题编译,但vscode不断给我的错误每次我试图从导入我的服务时间'services'给我[ts] Cannot find module 'services'.
为什么?
我正在使用typescript 3.1.6并在我的vscode设置中"typescript.tsdk": "C:/Users/myuser/AppData/Roaming/npm/node_modules/typescript/lib"(我也尝试保留默认设置,没有更改)
编辑:
如果我指定paths在./tsconfig.json无法启动src,vscode是幸福的,但角度不是.
如果我paths在两者中指定,tsconfig.json并且src/tsconfig.app.jsonvscode和angular都很高兴,但对我来说这似乎是一个太愚蠢的解决方法......
Doc*_*Doc 13
我想通了,即使我一直认为这都是荒谬的......
VsCode自动查找tsconfig.json文件并且它不关心tsconfig.app.json,因此paths需要在其中指定tsconfig.json.
同时,angular-cli脚手架指定一个baseUrl参数,tsconfig.app.json其中覆盖上一个.
解决方案是删除baseUrl参数tsconfig.app.json 或编辑其值"../"
(作为个人评论,鉴于vscode主要用于构建角度解决方案,我认为应该在angular-cli脚手架或vscode查找tsconfig文件的方式中重新考虑某些内容)
看来 VSCode只tsconfig.json直接检查您打开的文件夹中的. 它不会像 tsc 那样检查上面的文件夹,也不查看tsconfig.app.json. 因此,在某些情况下,baseUrl可能会丢失,因为 VSCode 根本没有读取tsconfig.json.
VSCode 对单个tsconfig.json固定位置的限制已经存在了一段时间,似乎要使其更加灵活并不容易:
https://github.com/microsoft/vscode/issues/12463
(滚动到末尾)
如上所述,这在具有多个子项目的 Angular-CLI 脚手架中很烦人,而tsconfig.json工作区的根部只有一个子项目。显然,这些项目可能有不同之baseUrls处,不能从根本上tsconfig.app.json归为一个。tsconfig.json
作为一种解决方法,除了特定于项目之外,我还在子项目的 src 文件夹中为 VSCodebaseUrl创建tsconfig.app.json了一个额外的最小文件,并从那里打开 VSCode。我还没有对此进行严格的测试,但到目前为止,Angular 编译和 VSCode 智能感知似乎都很满意。tsconfig.json"baseUrl":"."
| 归档时间: |
|
| 查看次数: |
3813 次 |
| 最近记录: |