我遇到了与以下问题相同的问题:
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 typescript@3.0.3 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
这是哪里来的?如何避免这种情况?
我想找出错误的出处,以便将其报告给正确的实体,但我不知道从哪里开始。
我还能尝试什么?
答案 0 :(得分:62)
这似乎是发生的,因为Yarn可以解析一个程序包的多个版本。 @types/react
在这种情况下。 Yarn从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
所指示的"*"
的任何版本。 Yarn解析@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"
纱线现在为"15.6.19"
和"@types/react@*"
依赖关系解析相同的版本"@types/react@^15.0.16"
。
我想知道为什么需要这样做。我希望Yarn能够理解它可以使用"@types/react" "*"
来解决依赖项"@types/react@^15.0.16"
而不是使用最新版本的@types/react
来解决它。
答案 1 :(得分:22)
这似乎是打字稿问题。
我当前的解决方法是将"skipLibCheck": true
添加到tsconfig.json
。
我想强调的是,这只是一种解决方法,而不能解决其自身的问题。
答案 2 :(得分:4)
对我来说,升级GET /house/mapping
时,我的反应类型在react-redux
,react
和react-intl
中重复。到目前为止,对我来说最不易受干扰的修复程序是运行以下命令:
react-intl
如果锁文件的结果差异正确,请继续删除npx yarn-deduplicate --packages @types/react yarn.lock
,然后删除node_modules
,以从重复数据删除的锁文件中获取新软件包。
答案 3 :(得分:2)
对我来说,最简单的解决方法是删除我的node_modules目录和yarn.lock / package-lock文件,然后执行yarn安装来重新安装所有节点模块。
答案 4 :(得分:2)
在yarn upgrade @types/react-router-dom
之后,我遇到了同样的问题。 git diff
显示已解析的@types/react
的多个版本。就我而言,yarn upgrade @types/react
解决了该问题。删除yarn.lock
应该会有所帮助。
似乎全新安装(没有yarn.lock
)会将软件包解析为一致状态,但是部分升级不会全局解析依赖项。因此,可能需要进行手动调整才能升级所有涉及的软件包。
答案 5 :(得分:2)
在我们的情况下,我们通过
对其进行了修复将所有@types/*
软件包移动到devDependencies
rm -rf yarn.lock
和rm -rf node_modules
再次运行yarn install
答案 6 :(得分:1)
我遇到了同样的错误。我设法通过删除“ @ types / react”并重新安装来解决此问题。
yarn remove @types/react
yarn add @types/react
答案 7 :(得分:1)
与该问题有关,从package.json目录运行npm list @types/react
应该列出在项目中找到的重复类型定义。
答案 8 :(得分:1)
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
中的ClientApp\node_modules\@types
目录react
目录,然后将其删除react
文件夹,因此在我看来,这就像是宇宙中某个地方的典型魔术错误:-)我不需要更改配置文件中的其他任何内容。
答案 9 :(得分:1)
使用yarn-deduplicate为我解决了这个问题。
步骤:
yarn-deduplicate
软件包或在第二步中使用npx
npm install -g yarn-deduplicate
或
yarn global add yarn-deduplicate
yarn-deduplicate
yarn-deduplicate yarn.lock --packages @types/react yarn.lock
或
npx yarn-deduplicate --packages @types/react yarn.lock
node_modules
文件夹rm -rf node_modules
yarn install
答案 10 :(得分:1)
在我的例子中,当 @types/react
(v17.0.3) 和 @types/react-dom
(v17.0.2) 的版本号不同步时出现错误。
为了解决这个问题,我删除了 @types/react
,因为它是从 @types/react-dom
上吊起来的。您可以通过执行 yarn why @types/react
来验证这一点。
答案 11 :(得分:0)
在我的情况下,我收到错误消息,指出在两个不同的位置声明了“ LibraryManagedAttributes”。遵循这些路径,我意识到已安装的模块还具有package.json文件,该文件还添加了“ @ types / react”作为dep,并且其版本与根package.json文件中的版本不同。我将这两个更改为相同的版本,问题得以解决。
答案 12 :(得分:0)
我在我使用的另一个模块中对版本请求有冲突。修复该问题并重新安装yarn还是没有帮助。
使用NPM代替Yarn却为我解决了。
希望这对某人有帮助。
答案 13 :(得分:0)
对我有用的是从react
中删除@types/react
和package.json
,然后在zsh中:
rm -rf node_modules/**/react
npm i react @types/react
答案 14 :(得分:0)
对我来说,这仅是由引用的@types/react-redux
引起的。由npm i --save-dev @types/react
修复,因此package.json
看起来像这样:
...
"devDependencies": {
"@types/react": "^16.9.19",
"@types/react-redux": "^7.1.7"
...
}
答案 15 :(得分:0)
在处理链接依赖项时遇到了这个问题。我的链接程序包位于lerna存储库中,并且具有@types/react
作为devDependency。我将@types/react
添加为peerDependency,将工作流切换为yalc,并能够继续。