web-dev-qa-db-fra.com

Identifiant en double 'LibraryManagedAttributes'

J'ai le même problème que dans:

React TypeScript (2312,14): Identificateur en double 'LibraryManagedAttributes'

et

Erreur TypeScript: identificateur en double 'LibraryManagedAttributes'

Mais je ne trouve aucune solution.

J'ai déjà mis à niveau les dernières versions de noeud/npm/yarn/TypeScript. Aussi essayé de déclasser. Rien n'y fait.

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 [email protected] 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 ne me donne pas plus d'informations.

Comme je peux le voir, LibraryManagedAttributes est défini dans:

  • 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
  • ....

D'où vient-il? Comment puis-je éviter cela?

Je veux savoir d'où vient cette erreur pour pouvoir la signaler à la bonne entité, mais je ne sais pas par où commencer.

Que puis-je essayer d'autre?

36
Spen

Cela semble être le cas parce que Yarn résout plusieurs versions d’un paquet; @types/react dans ce cas particulier. Le fil résout @types/react à partir de votre package.json et en tant que dépendance de @types/react-dom.

Prenez l'extrait suivant de mon package.json :

"devDependencies": {
  "@types/react": "^15.0.16",
  "@types/react-dom": "^0.14.23"
  ...
}

Le yarn.lock créé après l'exécution de yarn install contient quelque chose de similaire à ceci:

"@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"

Notez que @types/react-dom dépend de toute version de @types/react comme indiqué par "*". Le fil résout deux versions de @types/react: "16.4.14" et "15.6.19". Cela entraîne les conflits de types que vous avez mentionnés.

La solution consiste à ajouter un champ de résolutions à votre package.json pour indiquer à Yarn de résoudre une version spécifique de @types/react. Prenez l'exemple suivant:

"resolutions": {
  "@types/react": "^15.0.16"
}

Exécutez yarn install à nouveau. Notez le changement dans le fichier 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"

Le fil résout maintenant la même version "15.6.19" pour les deux dépendances "@types/react@*" et "@types/react@^15.0.16".

Je voudrais savoir moi-même pourquoi cela est nécessaire. Je m'attendrais à ce que Yarn comprenne qu'il peut résoudre la dépendance "@types/react" "*" avec "@types/react@^15.0.16" au lieu de la résoudre avec la dernière version de @types/react.

75
Sander Schutten

Cela semble être un problème de TypeScript.

Ma solution actuelle consiste à ajouter "skipLibCheck": true à tsconfig.json.

Je tiens à souligner que ce n'est qu'une solution de contournement et non une solution au problème.

25
Spen

Le moyen le plus simple de résoudre ce problème pour moi était de supprimer mon répertoire node_modules et mes fichiers yarn.lock/package-lock, puis de procéder à une installation de fil pour réinstaller tous les modules de nœud.

4
Richard Torcato

J'ai le même problème après yarn upgrade @types/react-router-dom. git diff affiche plusieurs versions de @types/react résolu. Dans mon cas, yarn upgrade @types/react résout le problème. Supprimer yarn.lock devrait vous aider.

Il semble qu'une nouvelle installation (sans yarn.lock) résoudrait les packages à un état cohérent, mais une mise à niveau partielle ne résoudrait pas les dépendances de manière globale. Ainsi, des ajustements manuels peuvent être nécessaires pour mettre à niveau tous les packages concernés.

2
tsai

J'ai eu la même erreur. J'ai réussi à le réparer en supprimant mes "@ types/react", puis en les réinstallant.

yarn remove @types/react
yarn add @types/react
2
chosenjuan

Pour moi, j'avais les types de réaction dupliqués dans react-redux, react et react-intl lorsque j'ai mis à niveau react-intl. Le correctif le moins intrusif qui a fonctionné pour moi jusqu'à présent consiste à exécuter ceci:

npx yarn-deduplicate --packages @types/react yarn.lock

Si le diff résultant du fichier lock semble correct, continuez et supprimez node_modules, puis yarn pour obtenir les nouveaux packages du fichier lock dédupliqué.

1
mongkuen

Dans mon cas, j'ai eu l'erreur d'indiquer que 'LibraryManagedAttributes' est déclaré dans 2 emplacements différents. Suivez les chemins, je me suis rendu compte qu'un module installé possède également un fichier package.json qui ajoute également "@ types/react" en tant que dep, et que sa version n’est pas la même que celle du fichier racine package.json. J'ai changé ces deux versions dans la même version et le problème a été résolu.

0
bonniss