TypeScript 尝试使用 Yarn Workspaces 编译同级文件夹的 node_modules

lew*_*lbr 2 typescript yarnpkg yarn-workspaces

我正在尝试使用 TypeScript 和 Yarn Workspaces 制作带有“服务器”和“客户端”文件夹的 monorepo 项目。在没有创建“client”文件夹的情况下编译“server”文件夹效果很好,但是当我创建“client”文件夹时,编译“server”文件夹使TypeScript想要编译“client”的node_modules文件夹,但出现错误尽管如此编译。

错误是这样的:

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

5353 接口FormData {~~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:40:15 40 declare class 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 declare class 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 declare class URLSearchParams { ~~~~~~~~~~~~~~~~ 'URLSearchParams' 也在此处声明。

我试过了:

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

但没有结果。

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

我错过了什么?

提前致谢。

lew*_*lbr 5

通过以下方式解决:

  • 将“@types/node”安装为通用开发依赖项,
  • 在常用的 tsconfig 中添加 "types": ["node"]。

  • 谢谢!这也为我解决了这个问题。但你好像理解错了。将“types”属性添加到“compilerOptions”中会禁用自动包含,这仅在您使用具有全局声明的文件(而不是声明为模块的文件)时才重要,因此在大多数项目中禁用它应该是安全的。“节点”类型与您的解决方案无关。请参阅 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types (2认同)