关于reactjs:重复标识符’LibraryManagedAttributes’

Duplicate identifier 'LibraryManagedAttributes'

我有以下相同的问题:

React Typescript(2312,14):重复的标识符LibraryManagedAttributes

TypeScript错误:重复的标识符LibraryManagedAttributes

但我只是找不到任何解决方案。

我已经升级到最新的node / npm / yarn / typescript版本。 还尝试降级。 没有任何帮助。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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的依赖项。

从我的package.json中获取以下代码片段:

1
2
3
4
5
"devDependencies": {
 "@types/react":"^15.0.16",
 "@types/react-dom":"^0.14.23"
  ...
}

运行yarn install后创建的yarn.lock包含与以下内容类似的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"@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版本。 Yarn解析@types/react的两个版本:"16.4.14""15.6.19"。这会导致您提到的类型冲突。

解决方案是在您的package.json中添加一个resolutions字段,以告诉Yarn解析@types/react的特定版本。采取以下示例:

1
2
3
"resolutions": {
 "@types/react":"^15.0.16"
}

再次运行yarn install。请注意yarn.lock文件中的更改:

1
2
3
4
5
6
7
8
9
"@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为"@types/react@*""@types/react@^15.0.16"依赖项解析相同的版本"15.6.19"

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


这似乎是打字稿问题。

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

我想强调的是,这只是解决方法,而不是针对自身问题的解决方案。


我遇到了同样的错误。我设法通过删除" @ types / react"并重新安装来解决此问题。

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

对我来说,升级react-intl时,我在react-reduxreactreact-intl中有重复的反应类型。到目前为止,对我而言最不易受干扰的修复程序是运行以下命令:

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

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


对我来说,最简单的解决方法是删除我的node_modules目录和yarn.lock / package-lock文件,然后执行yarn安装来重新安装所有节点模块。


与该问题相关的是,从package.json目录中运行npm list @types/react应该列出在项目中找到的重复类型定义。


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

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


在我们的情况下,我们通过

  • 将所有@types/*软件包移至devDependencies

  • rm -rf yarn.lockrm -rf node_modules

  • 再次运行yarn install


  • 使用链接依赖项时遇到了这个问题。 我的链接包位于lerna仓库中,它的@types/react作为devDependency。 我添加了@types/react作为peerDependency,将工作流切换为yalc,并且能够继续。


    对我来说,它仅由引用@types/react-redux引起。由npm i --save-dev @types/react修复,因此package.json看起来像这样:

    1
    2
    3
    4
    5
    6
      ...
     "devDependencies": {
       "@types/react":"^16.9.19",
       "@types/react-redux":"^7.1.7"
        ...
      }

    1
    2
    3
    C:/Users/japa/source/repos/ReactTestApp/TemplateExample/ClientApp/node_modules/@types/react/index.d.ts
    TypeScript error in C:/Users/japa/source/repos/ReactTestApp/TemplateExample/ClientApp/node_modules/@types/react/index.d.ts(2835,14):
    Duplicate identifier 'LibraryManagedAttributes'.  TS2300

    就我而言,我需要手动解决问题(使用TS2300中描述的原理)。一旦将ReactKendo添加到我的项目中,问题就出现了。

  • 转到我的项目ClientApp\
    ode_modules\\@types
    中的ClientApp目录
  • 备份react目录,然后将其删除
  • 清理+构建+运行项目,并且不再发生上述错误
  • 错误消失后我恢复了react文件夹,错误似乎永远消失了,因此在我看来,这就像宇宙中某个典型的魔术错误:-)
  • 我不需要更改配置文件中的其他任何内容。


    对我有用的是从package.json中删除react@types/react,然后在zsh中:

    1
    2
    rm -rf node_modules/**/react
    npm i react @types/react

    我在使用的另一个模块中有一个相互冲突的版本请求。修复该问题并重新安装yarn也对我没有帮助。

    但是使用NPM代替Yarn为我解决了它。

    希望这对某人有帮助。


    在我的情况下,我收到错误消息,指出在两个不同的位置声明了" LibraryManagedAttributes"。遵循这些路径,我意识到已安装的模块还具有package.json文件,该文件还添加了" @ types / react"作为dep,并且其版本与根package.json文件中的版本不同。我将这两个更改为相同的版本,问题已解决。