重复标识符'LibraryManagedAttributes'

问题描述 投票:27回答:5

我有同样的问题:

React typescript (2312,14): Duplicate identifier 'LibraryManagedAttributes'

TypeScript error: Duplicate identifier '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
  • ....

这是从哪里来的?我怎么能避免这种情况?

我想找出这个错误的来源,以便我可以向正确的实体报告,但我不知道从哪里开始。

我还能尝试什么?

reactjs typescript
5个回答
73
投票

这似乎发生了,因为Yarn解析了一个包的多个版本; @types/react在这个特殊情况下。纱线从你的package.json中解析@types/react,并作为@types/react-dom的依赖。

从我的package.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"16.4.14""15.6.19"。这会导致您提到的类型冲突。

解决方案是在你的package.json中添加一个resolutions field,告诉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"

Yarn现在为"15.6.19""@types/react@*"依赖关系解析相同版本的"@types/react@^15.0.16"

我想知道自己为什么需要这样做。我希望Yarn能够理解它可以用"@types/react" "*"解析依赖"@types/react@^15.0.16"而不是用最新版本的@types/react来解析它。


23
投票

这似乎是打字稿问题。

我目前的解决方法是将"skipLibCheck": true添加到tsconfig.json

我想强调,这只是一种解决方法,而不是解决问题。


3
投票

解决这个问题的最简单方法是删除我的node_modules目录和yarn.lock / package-lock文件,然后进行yarn安装以重新安装所有节点模块。


2
投票

我在yarn upgrade @types/react-router-dom之后有同样的问题。 git diff显示@types/react已解决的多个版本。就我而言,yarn upgrade @types/react解决了这个问题。删除yarn.lock应该有所帮助。

似乎一个新的(没有yarn.lock)安装会将软件包解析为一致状态,但部分升级不会全局解析依赖关系。因此,可能需要手动调整以升级所有涉及的包。


2
投票

我得到了同样的错误。我设法通过删除我的'@ types / react'然后再次安装它来修复它。

yarn remove @types/react
yarn add @types/react

1
投票

对我来说,当我升级react-redux时,我在reactreact-intlreact-intl中有重复的反应类型。迄今为止对我有用的最少侵入性修复就是运行:

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

如果锁定文件的结果差异看起来正确,请继续删除node_modules,然后删除yarn以从重复数据删除的锁定文件中获取新包。


0
投票

在我的情况下,我得到错误表明'LibraryManagedAttributes'在两个不同的位置声明。按照路径,我意识到一个已安装的模块也有一个package.json文件,它还将“@ types / react”添加为dep,其版本与root package.json文件中的版本不同。我将这两个改为同一版本,问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.