TypeScript пытается скомпилировать node_modules родственной папки с помощью Yarn Workspaces

Я пытаюсь создать проект monorepo с папками «сервер» и «клиент», используя TypeScript и Yarn Workspaces. Компиляция папки «server» без создания папки «client» все же работает хорошо, но когда я создаю папку «client», компиляция папки «server» заставляет TypeScript скомпилировать папку node_modules «client», что дает ошибки, но тем не менее компиляция.

Ошибки такие:

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5353:11 - ошибка TS2300: повторяющийся идентификатор FormData.

5353 интерфейс FormData {~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:40:15 40 declare class FormData {~~~~~~~~ Здесь также был объявлен 'FormData'.

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5363:13 - ошибка TS2300: повторяющийся идентификатор FormData.

5363 объявить var FormData: {~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:40:15 40 declare class FormData {~~~~~~~~ Здесь также был объявлен 'FormData'.

../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:15671:11 - ошибка TS2300: повторяющийся идентификатор 'URLSearchParams'.

15671 интерфейс URLSearchParams {~~~~~~~~~~~~~~~

../node_modules/@types/react-native/globals.d.ts:258:15 258 declare class URLSearchParams {~~~~~~~~~~~~~~~ 'URLSearchParams' также был объявлен здесь.

Я пробовал:

  • не используя рабочие области,
  • указав «клиент» как зависимость от «сервера»,
  • исключение node_modules из "серверного" tsconfig,

но без результатов.

Я создал тестовое репо для воспроизведения ошибок (1 - репозиторий клонов, 2 - установка пряжи, 3 - сервер компакт-диска, 4 - tsc): https://github.com/lewislbr/typescript-test

Что мне не хватает?

Заранее спасибо.


person lewislbr    schedule 22.08.2019    source источник


Ответы (1)


Решено:

  • Установка "@ types / node" в качестве общей зависимости разработчика,
  • Добавление «типов»: [«узел»] в общий файл tsconfig.

????

person lewislbr    schedule 22.08.2019
comment
Спасибо! Это тоже решило проблему для меня. Но вы, кажется, неправильно это понимаете. Добавление свойства types к вашему compilerOptions отключает автоматическое включение, что важно только в том случае, если вы используете файлы с глобальными объявлениями (в отличие от файлов, объявленных как модули), поэтому отключение в большинстве проектов должно быть безопасным. Типы node не связаны с вашим решением. См. typescriptlang.org/docs/handbook/ < / а> - person Andrey Mikhaylov - lolmaus; 12.06.2020