tsc 正在尝试解析错误文件夹中的相对路径模块

tsc is trying to resolve relative path modules in the wrong folder

我正在使用 npm link 来引用我在测试项目中开发的打字稿库

这意味着我的 node_modules 看起来像这样:

node_modules/
|   myLib/
|   |   dist/
|   |   |   subModule/
|   |   |   |   index.js
|   |   |   |   index.d.ts
|   |   |   index.js
|   |   |   index.d.ts
|   |   node_modules/
|   |   src/
|   |   tsconfig.json
|   |   package.json

这意味着当我尝试使用 import X from "myLib" 引用我的库时,我必须告诉编译器源在 /dist forlder 中,而不是 myLib 的根目录中。

我通过在 myLibpackage.json 中添加一个 "main": "./dist/index.js" 来解决这个问题

问题是当我尝试导入一个相对于 myLib 的路径时 喜欢import Y from "myLib/subModule"

这次不行了。 因为 tsc 不是在查看 node_modules/myLib/dist/subModule,而是在查看 node_modules/myLib/subModules/dist/,它不存在。

如何让编译器查看子模块的正确路径?

您可以使用 tsconfig.json 中的 "paths" key in the "compilerOptions" 解决此问题。像这样:

{
  "compilerOptions": {
    "paths": {
      "myLib/*": "node_modules/myLib/dist/*"
    }
  }
}

遗憾的是,当您的 package.json.

中有 "types" 键时,这与 TypeScript 编译器如何解析定义文件有些类似 standing issue