Проблемы проверки типов при совместном использовании pnpm и typcript
Как я понял из учебника 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"
]
}
Есть идеи как это решить?
2 ответа
Добавление этого в мой файл tsconfig.json сработало для меня:
{
"compilerOptions": {
"preserveSymlinks": true
}
}
Для меня
"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, которые читались.