tsconfig 路径中有多个值

问题描述 投票:0回答:1

我目前有以下

tsconfig.json

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "Bundler",
    "target": "ESNext",

    "paths": {
      "@common": [
        "./common",
        "../common",
      ],
      "@common/*": [
        "./common/*",
        "../common/*",
      ],
    },
  }
}

当我尝试从

./common
(使用
@common
别名)导入某些内容时,它工作得很好,但如果我尝试从
../common
(使用
@common
别名)导入某些内容,我会收到一条错误消息:
@common 
没有导出成员[姓名]。

如果我反转数组的顺序,则相反,我可以从

../common
导入导出,但不能从
./common
导入导出。

重现:https://stackblitz.com/edit/vitejs-vite-nnc4wb?file=src%2Findex.ts%2Ctsconfig.json

似乎

tsconfig.json
只使用数组的第一项,这是有意的还是我做错了什么?如果仅使用数组的第一项是预期行为,那么让它成为数组有什么意义?

tsconfig tsconfig-paths
1个回答
0
投票

我面临着同样的问题,但在不同的环境中(nestjs)。 我已经检查了打字稿编译器文档here。如果你看一下fallback段落,它会说:

可以为路径映射提供多个文件路径。如果一条路径解析失败,将尝试数组中的下一条路径,直到解析成功或到达数组末尾。

"@common"
数组上的第一个条目之后,它会移至下一个条目。 我的项目中遇到的问题与扩展配置中的
baseUrl
选项有关。使用完整路径字符串作为后备我解决了问题:

# tsconfig.app.json

{
  "extends": "../../tsconfig.json",
  ...
  "paths": {
    "@/*": [
      "src/*",
      "apps/crud/src/*"
    ],
  }
}

我的项目文件夹结构是:

apps
├──crud
├──├──src
├──├──├──foo.ts
├──cli
├──├──src
├──├──├──bar.ts
├──├──tsconfig.app.json
tsconfig.json

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.