yarnpkg - TypeScript versucht, node_modules des benachbarten Ordners mit Yarn Workspaces zu kompilieren
Ich versuche, ein Monorepo-Projekt mit den Ordnern „server“ und „client“ unter Verwendung von TypeScript und Yarn Workspaces zu erstellen. Das Kompilieren des Ordners „server“, ohne den Ordner „client“ bereits erstellt zu haben, funktioniert gut, aber wenn ich den Ordner „client“ erstelle, möchte TypeScript beim Kompilieren des Ordners „server“ den node_modules-Ordner von „client“ kompilieren, was Fehler verursacht, aber dennoch kompiliert.
Die Fehler sind wie:
../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5353:11 - Fehler TS2300: Doppelte Kennung 'FormData'.
5353 Schnittstelle FormData { ~~~~~~~~
../node_modules/@types/react-native/globals.d.ts:40:15 40 erkläre Klasse FormData { ~~~~~~~~ 'FormData' wurde auch hier deklariert.
../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:5363:13 - Fehler TS2300: Doppelte Kennung 'FormData'.
5363 deklariere var FormData: { ~~~~~~~~
../node_modules/@types/react-native/globals.d.ts:40:15 40 erkläre Klasse FormData { ~~~~~~~~ 'FormData' wurde auch hier deklariert.
../../../../.config/yarn/global/node_modules/typescript/lib/lib.dom.d.ts:15671:11 - Fehler TS2300: Doppelte Kennung 'URLSearchParams'.
15671 Schnittstellen-URLSearchParams { ~~~~~~~~~~~~~~~
../node_modules/@types/react-native/globals.d.ts:258:15 258 declare class URLSearchParams { ~~~~~~~~~~~~~~~ ‚URLSearchParams‘ wurde auch hier deklariert.
Ich habe versucht:
- Verwendung von Workspaces vermeiden,
- die Angabe von „client“ als Abhängigkeit von „server“,
- Ausschluss von node_modules aus dem tsconfig von "server",
aber keine Ergebnisse.
Ich habe ein Test-Repo erstellt, um die Fehler zu reproduzieren (1- Repo klonen, 2- yarn installieren, 3- cd server, 4- tsc): https://github.com/lewislbr/typescript-test
Was fehlt mir?
Vielen Dank im Voraus.
Antwort #1
Gelöst durch:
- Installation von "@types/node" als gemeinsame Entwicklungsabhängigkeit,
- Hinzufügen von "types": ["node"] in der gemeinsamen tsconfig.
🎉