#typescript
Вопрос:
Когда я пытаюсь запустить typescript в своем проекте, я получаю следующее:
# ./node_modules/typescript/bin/tsc --project tsconfig.json
node_modules/@types/webpack/index.d.ts:32:3 - error TS2305: Module '"../../tapable/tapable"' has no exported member 'Tapable'.
32 Tapable,
~~~~~~~
node_modules/@types/webpack/index.d.ts:1062:23 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.
1062 resolver: SyncWaterfallHook;
~~~~~~~~~~~~~~~~~
node_modules/@types/webpack/index.d.ts:1063:22 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.
1063 factory: SyncWaterfallHook;
~~~~~~~~~~~~~~~~~
node_modules/@types/webpack/index.d.ts:1064:28 - error TS2707: Generic type 'AsyncSeriesWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.
1064 beforeResolve: AsyncSeriesWaterfallHook;
~~~~~~~~~~~~~~~~~~~~~~~~
… и так далее. 89 ошибок.
Первая строка вывода предполагает, что это типы чтения из ./node_modules/tapable/tapable.d.ts
. Этот файл типов не экспортируется Tapable
; и он экспортирует другие типы, например, AsyncSeriesWaterfallHook
с параметрами типа. Таким образом, все это согласуется с сообщением об ошибке.
Там также есть файл ./node_modules/@types/tapable/index.ts
. Это действительно экспорт Tapable
. Я не прошел через все ошибки, но из примеров, которые я проверил, кажется, что этот файл типов экспортируется с одинаковыми именами, но разными параметрами типов, которые соответствуют тому, что объявлено webpack.
Другими словами, модуль npm tapable
имеет два конфликтующих файла определения типов: один внутри собственного модуля и один в @types/tapable
модуле. Веб-пакет, похоже, создан для @types
одного, но он пытается проверить соответствие другому.
Пакет.json для webpack (версия 5.24.4) имеет "tapable": "^2.1.1"
. записываемый на пленку имеет "version": "2.1.1"
. Так что они должны совпадать.
Что происходит? Как мне сделать эту компиляцию?