web-dev-qa-db-ja.com

重複した識別子「LibraryManagedAttributes」

私と同じ問題があります:

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

これはどこから来たのですか?どうすればそれを回避できますか?

適切なエンティティに報告できるように、このエラーの原因を見つけたいのですが、どこから始めればよいかわかりません。

他に何ができますか?

36
Spen

これは、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が理解することを期待しています。

75
Sander Schutten

これはTypeScriptの問題のようです。

現在の回避策は、"skipLibCheck": truetsconfig.jsonに追加することです。

私はそれが単なる回避策であり、それ自体の問題の修正ではないことを強調したい。

25
Spen

これを修正する最も簡単な方法は、node_modulesディレクトリとyarn.lock/package-lockファイルを削除してから、糸のインストールを実行してすべてのノードモジュールを再インストールすることでした。

4
Richard Torcato

yarn upgrade @types/react-router-domの後に同じ問題があります。 git diffは、@types/reactの複数のバージョンが解決されたことを示します。私の場合、yarn upgrade @types/reactは問題を解決します。 yarn.lockを削除すると役立ちます。

新規(yarn.lockなし)インストールはパッケージを一貫した状態に解決しますが、部分的なアップグレードは依存関係をグローバルに解決しません。したがって、関連するすべてのパッケージをアップグレードするには、手動で調整する必要があります。

2
tsai

同じエラーが発生しました。 「@ types/react」を削除してから、再度インストールすることで修正できました。

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

私にとっては、react-reduxをアップグレードしたときに、react-intlreact、およびreact-intlで複製されたタイプが反応しました。私にとってこれまで働いていた最も邪魔にならない修正は、これを実行することです:

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

結果のロックファイルの差分が正しい場合は、node_modulesを削除し、yarnを削除して、重複排除されたロックファイルから新しいパッケージを取得します。

1
mongkuen

私の場合、「LibraryManagedAttributes」が2つの異なる場所で宣言されていることを示すエラーが表示されました。パスに従って、インストールされたモジュールにはpackage.jsonファイルもあり、depとして「@ types/react」も追加され、そのバージョンはルートpackage.jsonファイルのバージョンと同じではないことに気付きました。これら2つを同じバージョンに変更し、問題を解決しました。

0
bonniss