Проблемы проверки типов при совместном использовании 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, которые читались.

Другие вопросы по тегам