TypeScript 尝试使用 Yarn Workspaces 编译兄弟文件夹的 node_modules

Posted

技术标签:

【中文标题】TypeScript 尝试使用 Yarn Workspaces 编译兄弟文件夹的 node_modules【英文标题】:TypeScript tries to compile node_modules of sibling folder with Yarn Workspaces 【发布时间】:2019-12-27 18:00:50 【问题描述】:

我正在尝试使用 TypeScript 和 Yarn 工作区创建一个带有“服务器”和“客户端”文件夹的 monorepo 项目。在没有创建“客户端”文件夹的情况下编译“服务器”文件夹效果很好,但是当我创建“客户端”文件夹时,编译“服务器”文件夹会使 TypeScript 想要编译“客户端”的 node_modules 文件夹,但会出现错误仍在编译。

错误如下:

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5353:11 - 错误 TS2300:重复标识符“FormData”。

5353 接口表单数据 ~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:40:15 40 声明类 FormData ~~~~~~~~ 'FormData' 也在这里声明。

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5363:13 - 错误 TS2300:重复标识符“FormData”。

5363 声明 var FormData: ~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:40:15 40 声明类 FormData ~~~~~~~~ 'FormData' 也在这里声明。

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:15671:11 - 错误 TS2300:重复标识符“URLSearchParams”。

15671 接口 URLSearchParams ~~~~~~~~~~~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:258:15 258 声明类 URLSearchParams ~~~~~~~~~~~~~~~ 'URLSearchParams' 也在这里声明。

我试过了:

不使用工作区, 将“客户端”指定为“服务器”的依赖项, 从“服务器”tsconfig 中排除 node_modules,

但没有结果。

我创建了一个测试存储库来重现错误(1- 克隆存储库、2- 纱线安装、3- cd 服务器、4- tsc):https://github.com/lewislbr/typescript-test

我错过了什么?

提前致谢。

【问题讨论】:

【参考方案1】:

已解决:

将“@types/node”安装为通用开发依赖项, 在通用 tsconfig 中添加“类型”:[“节点”]。

?

【讨论】:

谢谢!这也为我解决了这个问题。但你似乎理解错了。将types 属性添加到compilerOptions 会禁用自动包含,这仅在您使用具有全局声明的文件(而不是声明为模块的文件)时才重要,因此在大多数项目中禁用它应该是安全的。 node 类型与您的解决方案无关。见typescriptlang.org/docs/handbook/…

以上是关于TypeScript 尝试使用 Yarn Workspaces 编译兄弟文件夹的 node_modules的主要内容,如果未能解决你的问题,请参考以下文章

Yarn 3.x PNP typescript CRA eslint 不适用于 VSCode

使用 yarn 安装依赖项编译 Typescript

yarn create react-app with typescript throwing errors

是否可以将 yarn-pnp 与 typescript/vscode 一起使用?

使用 yarn 和 ts 3.0 管理 typescript 项目 monorepo

Lerna、yarn 和 Typescript:找不到模块或其对应的类型声明