Doppelte Kennung 'LibraryManagedAttributes'

70

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, LibraryManagedAttributesist 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?

Spenhouet
quelle
Garn sollte nicht mehrere Kopien davon installieren @types/react. Versuchen Sie, Ihre yarn.lockDatei zu löschen und yarn installerneut auszuführen . Wenn das nicht hilft, versuchen Sie alle Abhängigkeiten von Entfernen der package.jsonAusnahme @types/react, @types/prop-typesund @types/react-overlayssehen , ob Sie immer noch das Problem. Wenn ja, fügen Sie Ihr package.jsonund yarn.lock(es sollte nicht mehr als ~ 40 Zeilen sein) zur Frage hinzu, damit wir sehen können, warum Garn das tut, was es tut.
Matt McCutchen
Das Löschen der Datei yarn.lock hat tatsächlich geholfen. Ich mache mir immer noch Sorgen, dass sich das eines Tages wiederholt. Ich bin mir nicht sicher, wie es dazu kam. Es könnte mit diesem Problem zusammenhängen: github.com/DefinitelyTyped/DefinitelyTyped/issues/28881
Spenhouet
1
Wenn jemand aufgrund der internen Abhängigkeit von @ types / react-dom und des Konflikts von @ types / react auf ein Problem stößt, können Sie diese Antwort ausprobieren, bei der beide auf einmal deinstalliert und neu installiert wurden. stackoverflow.com/a/54239498/4353782
Mayur Dhurpate

Antworten:

115

Dies scheint zu passieren, weil Yarn mehrere Versionen eines Pakets auflöst. @types/reactin diesem speziellen Fall. Garn wird @types/reactaus 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 installenthä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-domvon jeder Version von @types/reactwie 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 installerneut 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.

Sander Schutten
quelle
Ich hatte das gleiche Problem und diese Antwort brachte mich der Lösung näher. Allerdings musste ich den node_modulesOrdner vorher auch löschen yarn install, da sonst yarn installauf den geänderten nicht ausreichend reagiert würde package.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.)
Carsten Führmann
4
Ist es nach der Aktualisierung der Sperrdatei sicher, das resolutionsFeld zu entfernen ?
Harryg
Ja, es ist sicher, die Auflösungskonfiguration zu entfernen, sobald die neue Sperrdatei erstellt wurde.
JMadelaine
@ Sanders schutten Danke, ich habe einen Fehlerbericht für das React-Team erstellt. github.com/facebook/react/issues/20005
Tomasz Smykowski
Sie können verwenden 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.
Jeroen Vannevel
36

Dies scheint ein Typoskript-Problem zu sein.

Meine aktuelle Problemumgehung ist das Hinzufügen "skipLibCheck": truezu tsconfig.json.

Ich möchte betonen, dass dies nur eine Problemumgehung und keine Lösung für das Problem selbst ist.

Spenhouet
quelle
Wurde dies behoben? Ich habe gerade versucht, eine Anwendung zu erstellen und habe diesen Fehler erhalten.
MickB
10
Beachten Sie, dass das Hinzufügen "skipLibCheck": truezu tsconfig eine potenziell zerstörerische Aktion für die Typensicherheit Ihrer Codebasis darstellt und nur sehr schwer rückgängig zu machen ist.
CNP
Dies sollte die Antwort sein
HalfWebDev
Ich habe meinen Tag gerettet und das Aktivieren von skipLibCheck funktioniert für mich. Für mich funktionierte es nicht nur in meinem lokalen Bereich, daher sollte das Aktivieren des FlipsLipCheck-Flags für mich in Ordnung sein
Raj
15

Für mich hatte ich Typen in dupliziert reagieren react-redux, reactund react-intlwenn ich ein Upgrade react-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, yarnum neue Pakete aus der deduplizierten Sperrdatei zu erhalten.

Mongkuen
quelle
1
Danke dafür. Dies löste das Problem sofort. Sollte als Antwort markiert werden
karrde00
14

Ich habe den gleichen Fehler bekommen. Ich konnte es beheben, indem ich meine '@ types / react' entfernte und sie dann erneut installierte.

yarn remove @types/react
yarn add --dev @types/react
Auserwählter Juan
quelle
6

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.

Richard Torcato
quelle
2

Ich habe das gleiche Problem danach yarn upgrade @types/react-router-dom. git diffzeigt mehrere Versionen von @types/reactgelöst. In meinem Fall wird yarn upgrade @types/reactdas Problem behoben. Entfernenyarn.lock sollte helfen.

Es scheint, dass eine yarn.lockNeuinstallation (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.

Tsai
quelle
2
Entfernen yarn.lockwar der Schlüssel. Nur löschen node_modulesund installieren hat nicht geholfen.
Oyalhi
1
yarn upgrade @types/reactDas Problem wurde für mich behoben. Ich musste die yarn.lockDatei nicht nuklearisieren
Zander
2

Im Zusammenhang mit der Frage sollte das Ausführen npm list @types/reactaus dem Verzeichnis Ihrer package.json doppelte Typdefinitionen auflisten, die in Ihrem Projekt gefunden wurden.

Shan Plourde
quelle
2

In unserem Fall haben wir es behoben durch

  1. Verschieben aller @types/*Pakete nachdevDependencies

  2. rm -rf yarn.lock und rm -rf node_modules

  3. Führen Sie yarn installerneut aus

Zenoh
quelle
1
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.

  1. Ging zum ClientAppVerzeichnis in meinem ProjektClientApp\node_modules\@types
  2. Sicherte das reactVerzeichnis und löschte es dann
  3. Clean + Build + Run-Projekt und es tritt kein Fehler mehr auf
  4. Ich habe den reactOrdner 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.

Honza P.
quelle
1

Die Verwendung von Garn-Deduplikat hat das Problem für mich behoben.

Schritte:

  1. Optionales Installationspaket yarn-deduplicateoder Verwendung npxin Schritt 2
npm install -g yarn-deduplicate

oder

yarn global add yarn-deduplicate
  1. Lauf yarn-deduplicate
yarn-deduplicate yarn.lock --packages @types/react yarn.lock

oder

npx yarn-deduplicate --packages @types/react yarn.lock
  1. node_modulesOrdner entfernen
rm -rf node_modules
  1. Abhängigkeiten neu installieren
yarn install
Zerocewl
quelle
0

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.

bonniss
quelle
Dies ist eine alte Antwort, aber angesichts der Tatsache, dass sie unter "aktiv" für mich am höchsten ist, verdient sie meines Erachtens den Hinweis: Sie sollten die Datei package.json einer Abhängigkeit niemals ändern. Sobald Sie Knotenmodule neu installieren oder ein anderer Entwickler aus der Quelle erstellt, werden Ihre Änderungen nicht weitergegeben und Sie haben eine schlechte Zeit.
Sean.hudson
0

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.

Thiemo Müller
quelle
0

Was für mich funktioniert hat war Löschen reactund @types/reactvon package.json, dann in zsh:

rm -rf node_modules/**/react
npm i react @types/react
trusktr
quelle
0

Für mich wird es nur durch referenziert verursacht @types/react-redux. Behoben von npm i --save-dev @types/react, und so package.jsonsieht das so aus:

  ...
  "devDependencies": {
    "@types/react": "^16.9.19",
    "@types/react-redux": "^7.1.7"
    ...
  }
Jeff Tian
quelle
0

Ich hatte dieses Problem bei der Arbeit mit verknüpften Abhängigkeiten. Mein verknüpftes Paket lebt in einem Lerna-Repo und hatte @types/reacteine devDependency. Ich fügte @types/reactals PeerDependency hinzu, stellte meinen Workflow auf yalc um und konnte fortfahren.

AlexJ
quelle