私と同じ問題があります:
React TypeScript(2312,14):重複した識別子 'LibraryManagedAttributes'
そして
TypeScriptエラー:識別子 'LibraryManagedAttributes'が重複しています
しかし、解決策が見つかりません。
すでに最新のnode/npm/yarn/TypeScriptバージョンにアップグレードしました。ダウングレードも試みました。何も役に立たない。
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
はどういうわけか私に詳細な情報を提供しません。
ご覧のとおり、LibraryManagedAttributes
は次の場所で定義されています:
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
これはどこから来たのですか?どうすればそれを回避できますか?
適切なエンティティに報告できるように、このエラーの原因を見つけたいのですが、どこから始めればよいかわかりません。
他に何ができますか?
これは、Yarnがパッケージの複数のバージョンを解決するために起こるようです。この特定のケースでは@types/react
。 Yarnはpackage.jsonから@types/react
を、@types/react-dom
の依存関係として解決します。
Mypackage.jsonから次のスニペットを取得します。
"devDependencies": {
"@types/react": "^15.0.16",
"@types/react-dom": "^0.14.23"
...
}
yarn install
の実行後に作成される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@*":
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"
@types/react-dom
は、@types/react
で示されるように、"*"
のどのバージョンにも依存することに注意してください。糸は@types/react
の2つのバージョンを解決します:"16.4.14"
と"15.6.19"
。これにより、言及したタイプの競合が発生します。
解決策は、 解像度フィールド をpackage.jsonに追加して、Yarnに@types/react
の特定のバージョンを解決するように指示することです。次のサンプルをご覧ください。
"resolutions": {
"@types/react": "^15.0.16"
}
yarn install
を再度実行します。 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"
ヤーンは、"15.6.19"
と"@types/react@*"
の両方の依存関係について、同じバージョン"@types/react@^15.0.16"
を解決するようになりました。
なぜこれが必要なのかを知りたい。 Yarnは、"@types/react" "*"
の最新バージョンで解決するのではなく、"@types/react@^15.0.16"
で依存関係@types/react
を解決できることをYarnが理解することを期待しています。
これはTypeScriptの問題のようです。
現在の回避策は、"skipLibCheck": true
をtsconfig.json
に追加することです。
私はそれが単なる回避策であり、それ自体の問題の修正ではないことを強調したい。
これを修正する最も簡単な方法は、node_modulesディレクトリとyarn.lock/package-lockファイルを削除してから、糸のインストールを実行してすべてのノードモジュールを再インストールすることでした。
yarn upgrade @types/react-router-dom
の後に同じ問題があります。 git diff
は、@types/react
の複数のバージョンが解決されたことを示します。私の場合、yarn upgrade @types/react
は問題を解決します。 yarn.lock
を削除すると役立ちます。
新規(yarn.lock
なし)インストールはパッケージを一貫した状態に解決しますが、部分的なアップグレードは依存関係をグローバルに解決しません。したがって、関連するすべてのパッケージをアップグレードするには、手動で調整する必要があります。
同じエラーが発生しました。 「@ types/react」を削除してから、再度インストールすることで修正できました。
yarn remove @types/react
yarn add @types/react
私にとっては、react-redux
をアップグレードしたときに、react-intl
、react
、およびreact-intl
で複製されたタイプが反応しました。私にとってこれまで働いていた最も邪魔にならない修正は、これを実行することです:
npx yarn-deduplicate --packages @types/react yarn.lock
結果のロックファイルの差分が正しい場合は、node_modules
を削除し、yarn
を削除して、重複排除されたロックファイルから新しいパッケージを取得します。
私の場合、「LibraryManagedAttributes」が2つの異なる場所で宣言されていることを示すエラーが表示されました。パスに従って、インストールされたモジュールにはpackage.jsonファイルもあり、depとして「@ types/react」も追加され、そのバージョンはルートpackage.jsonファイルのバージョンと同じではないことに気付きました。これら2つを同じバージョンに変更し、問題を解決しました。