同时使用pnpm和typescript时的类型检查问题
据我从pnpm了解,创建符号链接的同时使用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
.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 storenode\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
也没有这些问题,请参阅。