Ich habe das gleiche Problem wie in:
Typoskript reagieren (2312,14): Doppelte Kennung 'LibraryManagedAttributes'
und
TypeScript-Fehler: Doppelte Kennung 'LibraryManagedAttributes'
Aber ich kann einfach keine Lösung finden.
Ich habe bereits ein Upgrade auf die neuesten Versionen von node / npm / yarn / typescript durchgeführt. Auch ein Downgrade versucht. Nichts hilft.
yarn build --verbose
yarn run v1.9.4
$ react-scripts-ts build --verbose
Creating an optimized production build...
Starting type checking and linting service...
Using 1 worker with 2048MB memory limit
ts-loader: Using typescript@3.0.3 and C:\dev\project\frontend\tsconfig.prod.json
Warning: member-ordering - Bad member kind: public-before-private
Failed to compile.
C:/dev/project/frontend/node_modules/@types/prop-types/node_modules/@types/react/index.d.ts
(2312,14): Duplicate identifier 'LibraryManagedAttributes'.
error Command failed with exit code 1.
--verbose
gibt mir irgendwie keine weiteren Informationen.
Wie ich sehen kann, LibraryManagedAttributes
ist definiert in:
node_modules/@types/react/index.d.ts
node_modules/@types/prop-types/node_modules/@types/react/index.d.ts
node_modules/@types/react-overlays/node_modules/@types/react/index.d.ts
- ....
Woher kommt das? Wie kann ich das vermeiden?
Ich möchte herausfinden, woher dieser Fehler kommt, damit ich ihn der richtigen Entität melden kann, aber ich weiß nicht, wo ich anfangen soll.
Was kann ich noch versuchen?
reactjs
typescript
Spenhouet
quelle
quelle
@types/react
. Versuchen Sie, Ihreyarn.lock
Datei zu löschen undyarn install
erneut auszuführen . Wenn das nicht hilft, versuchen Sie alle Abhängigkeiten von Entfernen derpackage.json
Ausnahme@types/react
,@types/prop-types
und@types/react-overlays
sehen , ob Sie immer noch das Problem. Wenn ja, fügen Sie Ihrpackage.json
undyarn.lock
(es sollte nicht mehr als ~ 40 Zeilen sein) zur Frage hinzu, damit wir sehen können, warum Garn das tut, was es tut.Antworten:
Dies scheint zu passieren, weil Yarn mehrere Versionen eines Pakets auflöst.
@types/react
in diesem speziellen Fall. Garn wird@types/react
aus Ihrer package.json und als Abhängigkeit von aufgelöst@types/react-dom
.Nehmen Sie den folgenden Ausschnitt aus meinem package.json :
"devDependencies": { "@types/react": "^15.0.16", "@types/react-dom": "^0.14.23" ... }
Das yarn.lock , das nach dem Ausführen erstellt wird,
yarn install
enthält Folgendes :"@types/react-dom@^0.14.23": version "0.14.23" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-0.14.23.tgz#cecfcfad754b4c2765fe5d29b81b301889ad6c2e" dependencies: "@types/react" "*" "@types/react@*": version "16.4.14" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.14.tgz#47c604c8e46ed674bbdf4aabf82b34b9041c6a04" dependencies: "@types/prop-types" "*" csstype "^2.2.0" "@types/react@^15.0.16": version "15.6.19" resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.19.tgz#a5de18afe65b0f29767328836b48c498a5d3a91b"
Beachten Sie, dass dies
@types/react-dom
von jeder Version von@types/react
wie angegeben abhängt"*"
. Garn löst zwei Versionen von@types/react
:"16.4.14"
und"15.6.19"
. Dies führt zu den von Ihnen erwähnten Typkonflikten.Die Lösung besteht darin , Ihrem package.json ein Auflösungsfeld hinzuzufügen , um Yarn anzuweisen , eine bestimmte Version von aufzulösen
@types/react
. Nehmen Sie das folgende Beispiel:"resolutions": { "@types/react": "^15.0.16" }
Führen Sie
yarn install
erneut aus. Beachten Sie die Änderung in der Datei yarn.lock :"@types/react-dom@^0.14.23": version "0.14.23" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-0.14.23.tgz#cecfcfad754b4c2765fe5d29b81b301889ad6c2e" dependencies: "@types/react" "*" "@types/react@*", "@types/react@^15.0.16": version "15.6.19" resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.19.tgz#a5de18afe65b0f29767328836b48c498a5d3a91b"
Garn löst jetzt dieselbe Version
"15.6.19"
für beide"@types/react@*"
und"@types/react@^15.0.16"
Abhängigkeiten auf.Ich würde gerne selbst wissen, warum dies erforderlich ist. Ich würde erwarten , Garn zu verstehen , es lösen Abhängigkeit kann
"@types/react" "*"
mit"@types/react@^15.0.16"
statt der Lösung mit der neuesten Version von@types/react
.quelle
node_modules
Ordner vorher auch löschenyarn install
, da sonstyarn install
auf den geänderten nicht ausreichend reagiert würdepackage.json
. (Ich habe die Antwort entsprechend bearbeitet, um andere Leser davon abzuhalten, auf dieses Problem zu stoßen, aber seltsamerweise wurde dies von Gleichaltrigen abgelehnt.)resolutions
Feld zu entfernen ?yarn why @types/react
, um zusätzliche Informationen darüber zu erhalten, woher diese unterschiedlichen Versionen stammen. In meinem Fall hatte ich eine 17.x- und 16.x-Version, wobei letztere aus einer Abhängigkeit stammte, die ich nicht wirklich verwendet hatte, sodass ich sie einfach entfernen konnte.Dies scheint ein Typoskript-Problem zu sein.
Meine aktuelle Problemumgehung ist das Hinzufügen
"skipLibCheck": true
zutsconfig.json
.Ich möchte betonen, dass dies nur eine Problemumgehung und keine Lösung für das Problem selbst ist.
quelle
"skipLibCheck": true
zu tsconfig eine potenziell zerstörerische Aktion für die Typensicherheit Ihrer Codebasis darstellt und nur sehr schwer rückgängig zu machen ist.Für mich hatte ich Typen in dupliziert reagieren
react-redux
,react
undreact-intl
wenn ich ein Upgradereact-intl
. Die am wenigsten aufdringliche Lösung, die bisher für mich funktioniert hat, besteht darin, Folgendes auszuführen:npx yarn-deduplicate --packages @types/react yarn.lock
Wenn der resultierende Unterschied der Sperrdatei korrekt aussieht, löschen Sie ihn
node_modules
,yarn
um neue Pakete aus der deduplizierten Sperrdatei zu erhalten.quelle
Ich habe den gleichen Fehler bekommen. Ich konnte es beheben, indem ich meine '@ types / react' entfernte und sie dann erneut installierte.
quelle
Der einfachste Weg, dies zu beheben, bestand darin, das Verzeichnis node_modules und die Dateien yarn.lock / package-lock zu löschen und anschließend eine Garninstallation durchzuführen, um alle Knotenmodule neu zu installieren.
quelle
Ich habe das gleiche Problem danach
yarn upgrade @types/react-router-dom
.git diff
zeigt mehrere Versionen von@types/react
gelöst. In meinem Fall wirdyarn upgrade @types/react
das Problem behoben. Entfernenyarn.lock
sollte helfen.Es scheint, dass eine
yarn.lock
Neuinstallation (ohne ) Pakete Pakete in einen konsistenten Zustand auflösen würde, aber ein teilweises Upgrade würde die Abhängigkeiten nicht global auflösen. Daher können manuelle Anpassungen erforderlich sein, um alle beteiligten Pakete zu aktualisieren.quelle
yarn.lock
war der Schlüssel. Nur löschennode_modules
und installieren hat nicht geholfen.yarn upgrade @types/react
Das Problem wurde für mich behoben. Ich musste dieyarn.lock
Datei nicht nuklearisierenIm Zusammenhang mit der Frage sollte das Ausführen
npm list @types/react
aus dem Verzeichnis Ihrer package.json doppelte Typdefinitionen auflisten, die in Ihrem Projekt gefunden wurden.quelle
In unserem Fall haben wir es behoben durch
Verschieben aller
@types/*
Pakete nachdevDependencies
rm -rf yarn.lock
undrm -rf node_modules
Führen Sie
yarn install
erneut ausquelle
C:/Users/japa/source/repos/ReactTestApp/TemplateExample/ClientApp/node_modules/@types/react/index.d.ts TypeScript error in C:/Users/japa/source/repos/ReactTestApp/TemplateExample/ClientApp/node_modules/@types/react/index.d.ts(2835,14): Duplicate identifier 'LibraryManagedAttributes'. TS2300
In meinem Fall musste ich das Problem manuell lösen (nach dem in TS2300 beschriebenen Prinzip ). Das Problem trat auf, als ich ReactKendo zu meinem Projekt hinzufügte.
ClientApp
Verzeichnis in meinem ProjektClientApp\node_modules\@types
react
Verzeichnis und löschte es dannreact
Ordner wiederhergestellt, nachdem der Fehler verschwunden ist und der Fehler für immer verschwunden zu sein scheint. Daher scheint er mir ein typischer magischer Fehler irgendwo im Universum zu sein :-)Ich musste nichts anderes in den Konfigurationsdateien ändern.
quelle
Die Verwendung von Garn-Deduplikat hat das Problem für mich behoben.
Schritte:
yarn-deduplicate
oder Verwendungnpx
in Schritt 2oder
yarn global add yarn-deduplicate
yarn-deduplicate
oder
node_modules
Ordner entfernenquelle
In meinem Fall wurde der Fehler angezeigt, dass 'LibraryManagedAttributes' an zwei verschiedenen Speicherorten deklariert ist. Folgen Sie den Pfaden. Ich habe festgestellt, dass ein installiertes Modul auch eine package.json-Datei enthält, die auch "@ types / react" als dep hinzufügt, und deren Version nicht mit der in der root-Datei package.json übereinstimmt. Ich habe diese beiden auf die gleiche Version geändert und das Problem wurde gelöst.
quelle
Ich hatte eine widersprüchliche Versionsanforderung, in einem anderen von mir verwendeten Modul zu reagieren. Das zu reparieren und mit Garn neu zu installieren, hat mir auch nicht geholfen.
Die Verwendung von NPM anstelle von Garn löste es jedoch für mich.
Hoffe das hilft jemandem.
quelle
Was für mich funktioniert hat war Löschen
react
und@types/react
vonpackage.json
, dann in zsh:rm -rf node_modules/**/react npm i react @types/react
quelle
Für mich wird es nur durch referenziert verursacht
@types/react-redux
. Behoben vonnpm i --save-dev @types/react
, und sopackage.json
sieht das so aus:... "devDependencies": { "@types/react": "^16.9.19", "@types/react-redux": "^7.1.7" ... }
quelle
Ich hatte dieses Problem bei der Arbeit mit verknüpften Abhängigkeiten. Mein verknüpftes Paket lebt in einem Lerna-Repo und hatte
@types/react
eine devDependency. Ich fügte@types/react
als PeerDependency hinzu, stellte meinen Workflow auf yalc um und konnte fortfahren.quelle