为什么 vscode 不能在 typescript monorepo 的包内运行智能感知功能?

Shl*_*evi 5 node.js typescript visual-studio-code lerna monorepo

我用lerna创建了一个monorepo(github中的代码)。

里面我有两个包,每个包都有导出sum功能。

app1文件夹中我想导入这个函数,但 vscode 没有找到该函数。

不知道为什么。我正确设置了所有内容,vscode 应该从两个路径提供:

@packages/pck1
@packages/pck2
Run Code Online (Sandbox Code Playgroud)

/tsconfig.json

{
  "extends": "./tsconfig.build.json",

  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@packages/*": ["packages/*/src"]
    },
    "jsx": "react",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "types": []
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你可以克隆我的 repo-run npm install,然后打开 vscode 并转到apps/app1/src/index.ts并写入sum. 等待打字稿找到该函数。你会得到:

在此输入图像描述

找不到原因,任何帮助将不胜感激。

Gui*_*ohr 2

如果您使用范围包,它们将被称为@pck1@pck2,而不是@packages/SOMETHING像您的顶级tsconfig.json建议的那样。

我可以让你的例子工作如下:

将这些添加compilerOptionsapps/app1/tsconfig.json

"baseUrl": ".",
"paths": {
  "@pck1": ["../../packages/pck1/src"]
}
Run Code Online (Sandbox Code Playgroud)

并改变apps/app1/src/index.ts

import { sum } from '@pck1';
sum(9,9);
Run Code Online (Sandbox Code Playgroud)

您的基本错误是:您考虑了packages包名称的一部分,但它只是一个目录。我为此在 github 上创建了一个 PR: https: //github.com/wizardnet972/lerna-test/pull/1

我在 github 上有一个类似的 lerna 测试项目:https://github.com/gflohr/lerna-deps。博客文章http://www.guido-flohr.net/lerna-mono-repos-with-internal-dependencies/对此进行了解释。也许您可以以此为起点。