【问题标题】:Do path mappings work between different projects that are being referenced?路径映射在被引用的不同项目之间是否有效?
【发布时间】:2020-02-11 11:12:49
【问题描述】:

我无法让路径映射在纱线工作区设置中的两个不同打字稿项目之间工作。

我在纱线工作区中有 2 个不同的项目。所以文件夹结构如下图。

packages
├── common
│   ├── node_modules
│   ├── package.json
│   ├── src
│   │   └── logger.ts
│   └── tsconfig.json
├── main
│   ├── node_modules
│   ├── package.json
│   ├── src
│   │   ├── app
│   │   │   └── settings.ts
│   │   └── main.ts
│   └── tsconfig.json
tsconfig.base.json
node_modules

在我的 /main 的 tsconfig 中,我有

    "baseUrl": ".",
    "paths": {
      "Common/*": ["../common/src/*"]
    },
    "references": [
    { "path": "../common","prepend": true }
  ]

在 main/src/main.ts 中,我试图从模块中导入默认导出,就像这样

import Log from 'Common/logger'

但我得到了错误:

TS2307:找不到模块

这不是我在使用 typescript 时遇到过的问题,所以我想知道这个问题是否与我尝试映射到的路径也被用作项目参考这一事实有关。

我希望它能够像往常一样工作,能够将../common/src/logger 导入为Common/logger

【问题讨论】:

    标签: javascript typescript yarnpkg tsc


    【解决方案1】:

    所以在这种情况下的问题原来是我从tsconfig.base.json 扩展而来,它内部没有设置关键的“路径”。基本上,tsconfig 文件中的继承工作与 oop 中的完全一样,我试图覆盖基本配置中不存在的字段。

    解决方法是简单地添加

        "paths": {
          "Common/*": ["./packages/common/src/*"]
        }
    

    tsconfig.base.json 内部,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2014-05-23
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      相关资源
      最近更新 更多