同时使用pnpm和typescript时的类型检查问题

同时使用pnpm和typescript时的类型检查问题,typescript,types,symlink,typechecking,pnpm,Typescript,Types,Symlink,Typechecking,Pnpm,据我从pnpm了解,创建符号链接的.registry.npmjs.org,其他条目指向节点模块下。我的项目在typescript上,我有@types在node\u模块中打字。但是这个@types在节点_modules/.registry.npmjs.org/@types中也有。所以我得到了一个错误,比如: /node_modules/.registry.npmjs.org/@types/jquery/3.3.5/node_modules/@types/jquery/index.d.ts(32,1

据我从pnpm了解,创建符号链接的
.registry.npmjs.org
,其他条目指向
节点模块下。我的项目在
typescript
上,我有
@types
node\u模块中打字。但是这个
@types
节点_modules/.registry.npmjs.org/@types
中也有。所以我得到了一个错误,比如:

/node_modules/.registry.npmjs.org/@types/jquery/3.3.5/node_modules/@types/jquery/index.d.ts(32,14):错误TS2300:重复标识符“jquery”。

…和

/node\u modules/@types/jquery/index.d.ts(28,14):错误TS2300:重复标识符“jquery”。

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": [
      "es5",
      "dom",
      "es2015.promise"
    ],
    "experimentalDecorators": true,
    "sourceMap": true,
    "allowSyntheticDefaultImports": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "scripts",
    "src/contracts"
  ]
}
有什么办法解决吗?

对我来说,
类型根“:[“/node\u modules/@types”]
奏效了

默认情况下,
tsc
将在所有
node_modules/@types
文件夹中查找类型

您可以通过调用
tsc--listFiles
来测试包含哪些文件

xxx/node_modules/.pnpm/typescript@3.9.7/node_modules/typescript/lib/lib.es5.d.ts
我认为,因为这个文件是由
typescript
本身包含的,所以它还将包含pnpm repo store
node\u modules/.pnpm/@types
中的所有文件

xxx/node_modules/.pnpm/typescript@3.9.7/node_modules/typescript/lib/lib.es5.d.ts

在我的例子中,我有多个版本的React,正在阅读。

您是否已经在
tsconfig.json
文件中设置了
排除“:[“node\u modules/.registry.npmjs.org”]
?这是我要尝试的第一件事,但我不会把它作为一个答案,因为我不太相信它会起作用。@MattMcCutchen是的,我试过了,但它没有帮助。。。此外,我还尝试了
“typeroot”:[“/node\u modules/@types”]
使用itI无法重现该问题<代码>tsc--跟踪解决方案
可能会有所帮助。如果您无法从输出中发现问题,请将其发布到问题中,我将查看。@AlexFilatov您使用的typescript版本是什么?我知道v1与符号链接有问题,但v2/3工作正常。实际上,pnpm是用typescript编写的,typescript 2pnpm使用的
@types
也没有这些问题,请参阅。