据tutorial理解,pnpm创建符号链接的.registry.npmjs.org
,其他条目指向node_modules
下。我的项目在typescript
上,我有@types
可以在node_modules
中键入内容。但是此@types
也包含在node_modules/.registry.npmjs.org/@types
中。所以我遇到了类似的错误:
/node_modules/.registry.npmjs.org/@types/jquery/3.3.5/node_modules/@types/jquery/index.d.ts(32,14): error TS2300: Duplicate identifier 'jQuery'.
...和
/node_modules/@types/jquery/index.d.ts(28,14): error TS2300: Duplicate identifier '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"
]
}
有什么想法要解决吗?
答案 0 :(得分:1)
对我来说"typeRoots": ["./node_modules/@types"]
有效。
默认情况下,tsc
将在所有 node_modules/@types
文件夹中查找类型。
您可以通过调用 tsc --listFiles
来测试包含哪些文件。
我认为因为这个文件是由 typescript
本身包含的,那么它也会包含 pnpm 存储库 node_modules/.pnpm/@types
中的所有文件。
xxx/node_modules/.pnpm/typescript@3.9.7/node_modules/typescript/lib/lib.es5.d.ts
就我而言,我有多个版本的 React 可供阅读。