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?
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
.
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.
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.
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.
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
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é.
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.