为什么vscode在打字稿monorepo的包内没有智能感知功能?

问题描述

我用lerna(the code in github)创建了一个monorepo。

内部有两个软件包,每个软件包都有导出sum函数。

app1文件夹中,我想导入此函数,但vscode找不到该函数。

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

@packages/pck1
@packages/pck2

/tsconfig.json

{
  "extends": "./tsconfig.build.json","compilerOptions": {
    "baseUrl": ".","paths": {
      "@packages/*": ["packages/*/src"]
    },"jsx": "react","esModuleInterop": true,"skipLibCheck": true,"types": []
  }
}

如果您可以克隆我的仓库,请运行npm install,然后打开vscode并转到apps/app1/src/index.ts并输入sum。等待打字稿找到功能。您将得到:

enter image description here

找不到原因,将不胜感激。

解决方法

如果您使用的是有作用域的程序包,它们将被称为@pck1@pck2,而不是顶级@packages/SOMETHING建议的tsconfig.json

我可以使您的示例工作如下:

将这些compilerOptions添加到apps/app1/tsconfig.json

"baseUrl": ".","paths": {
  "@pck1": ["../../packages/pck1/src"]
}

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

import { sum } from '@pck1';
sum(9,9);

您的基本错误是:您认为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/中对此进行了解释。也许您可以以此为起点。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...