首页 > 解决方案 > 如何为 WebStorm 中的多个源目录解析 tsconfig.app.json 中的别名

问题描述

我在目录之外生成了一些源文件src。结构是:

- project
  - generated
    - $ui-services
        some-other.service.ts
  - src
    - app
      - $ui-services
          some.service.ts

在 tsconfig.app.json 我指定:

"compilerOptions": {
  ...
  "paths": {
    ...
    "@ui-services/*": ["app/$ui-services/*", "../generated/$ui-services/*"],
    ...
  }
},
"include": [
  "./**/*.ts",
  "../generated/**/*.ts"
]

在 SomeOtherService 现在我可以像这样导入 SomeService :

import {SomeService} from '@ui-services/some.service';

它按预期工作,但现在我在 some-other-service.ts 中失去了任何 WebStorm 开发支持。WebStorm 似乎无法正确解析别名。

我已经尝试按照某些人的建议将这两个文件夹标记为资源根目录,但这并没有帮助。

我能做些什么来解决另一个目录中文件的分辨率吗?

标签: angulartypescriptangular-cliwebstormtsconfig

解决方案


tsc在命令行中运行时,您将面临同样的问题。Typescript 编译器使用最近tsconfig.*.json包含的当前文件,从文件 dir 扫描文件夹直到项目根目录。最近的配置文件generated/$ui-services/some-service.service.tstsconfig.json位于项目根目录中的文件,并且该配置没有定义任何别名,因此 tsc 报告TS2307错误,并且无法解析成员。将路径映射复制到根配置应该可以解决问题:

"paths": {
      "@ui-services/*": ["src/app/$ui-services/*", "generated/$ui-services/*"]
    },

推荐阅读