Повторяющийся идентификатор 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
  • ....

Откуда это взялось? Как мне этого избежать?

Я хочу выяснить, откуда взялась эта ошибка, чтобы сообщить об этом нужному объекту, но я не знаю, с чего начать.

Что еще можно попробовать?

Пряжа не должна так устанавливать несколько копий @types/react. Попробуйте удалить файл yarn.lock и снова запустить yarn install. Если это не помогает, попробуйте удалить все зависимости от package.json, кроме @types/react, @types/prop-types и @types/react-overlays, и посмотрите, сохраняется ли проблема. Если это так, добавьте свои package.json и yarn.lock (это должно быть не более ~ 40 строк) к вопросу, чтобы мы могли понять, почему yarn делает то, что делает.

Matt McCutchen 20.09.2018 05:52

На самом деле помогло удаление файла yarn.lock. Я все еще беспокоюсь, что когда-нибудь это повторится. Я не знаю, как это вообще произошло. Это может быть связано с этой проблемой: github.com/DefinitiTyped/DefinitiTyped/issues/28881

Spenhouet 20.09.2018 07:57

Если кто-то сталкивается с проблемой из-за внутренней зависимости @ types / response-dom и столкновения @ types / response, вы можете попробовать этот ответ, который в основном удалял и переустанавливал их оба за один раз. stackoverflow.com/a/54239498/4353782

Mayur Dhurpate 11.04.2020 15:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
88
3
43 949
16

Ответы 16

Похоже, это проблема с машинописным текстом.

Мой текущий обходной путь - добавление "skipLibCheck": true в tsconfig.json.

Я хочу подчеркнуть, что это всего лишь обходной путь, а не решение самой проблемы.

Это было решено? Я просто попытался создать приложение и получил эту ошибку.

MickB 16.11.2018 22:59

Обратите внимание, что добавление "skipLibCheck": true в tsconfig является потенциально деструктивным действием для безопасности типов вашей кодовой базы, и его очень сложно отменить.

cnp 30.05.2019 22:28

Это должен быть ответ

HalfWebDev 08.10.2019 09:18

Спас мой день, включение skipLibCheck работает для меня, для меня он не работал только в моем локальном, поэтому включение флага skipLibCheck должно быть для меня нормально

Raj 12.02.2020 10:51

это прямо здесь устранило проблему

kawerewagaba 21.05.2021 14:22

Кажется, это происходит потому, что Yarn разрешает несколько версий пакета; @types/react в данном конкретном случае. Yarn разрешает @types/react из вашего package.json и как зависимость от @types/react-dom.

Возьмите следующий фрагмент из моего package.json:

"devDependencies": {
  "@types/react": "^15.0.16",
  "@types/react-dom": "^0.14.23"
  ...
}

yarn.lock, который создается после запуска yarn install, содержит что-то похожее на это:

"@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, чтобы указать 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.

У меня была та же проблема, и этот ответ приблизил меня к решению. Однако мне также пришлось удалить папку node_modules перед yarn install, поскольку в противном случае yarn install не будет действовать в достаточной степени на измененном package.json. (Я отредактировал ответ соответствующим образом, чтобы другие читатели не столкнулись с этой проблемой, но, как ни странно, этот ответ был отвергнут.)

Carsten Führmann 18.11.2018 15:40

После обновления файла блокировки можно ли удалить поле resolutions?

harryg 06.02.2019 15:07

Да, можно безопасно удалить конфигурацию разрешений после создания нового файла блокировки.

JMadelaine 21.04.2020 06:06

@sander schutten Спасибо, я создал отчет об ошибке для команды React github.com/facebook/react/issues/20005

Tomasz Smykowski 13.10.2020 10:24

Вы можете использовать yarn why @types/react, чтобы получить дополнительную информацию о происхождении этих различных версий. В моем случае у меня были версии 17.x и 16.x, последняя из которых возникла из-за зависимости, которую я на самом деле не использовал, поэтому я мог просто удалить ее.

Jeroen Vannevel 21.12.2020 22:56

Самый простой способ исправить это для меня - удалить каталог node_modules и файлы yarn.lock / package-lock, а затем выполнить установку yarn для переустановки всех модулей node.

У меня такая же проблема после yarn upgrade @types/react-router-dom. git diff показывает, что несколько версий @types/react разрешены. В моем случае yarn upgrade @types/react решает проблему. Удаление yarn.lock должно помочь.

Кажется, что новая (без yarn.lock) установка разрешит пакеты в согласованное состояние, но частичное обновление не разрешит зависимости глобально. Таким образом, для обновления всех задействованных пакетов могут потребоваться ручные настройки.

Ключевым моментом было удаление yarn.lock. Удаление только node_modules и установка не помогли.

oyalhi 22.12.2018 07:32
yarn upgrade @types/react решил проблему для меня. У меня файл yarn.lock ядерная бомба не потребовалась
Zander 18.01.2019 20:57

В моем случае я получил сообщение об ошибке, указывающее, что «LibraryManagedAttributes» объявлен в 2 разных местах. Следуя по путям, я понял, что в установленном модуле также есть файл package.json, который также добавляет "@ types / response" в качестве dep, и его версия отличается от версии в корневом файле package.json. Я заменил эти два на одну и ту же версию, и проблема была решена.

Это старый ответ, но, учитывая, что он занимает у меня наивысшее значение в категории «активный», я считаю, что он заслуживает упоминания: вам никогда не следует изменять файл package.json зависимости. Как только вы переустановите модули узла или соберете другой разработчик из исходного кода, ваши изменения не будут распространяться, и вам будет плохо.

sean.hudson 18.06.2019 10:27

У меня такая же ошибка. Мне удалось исправить это, удалив мои «@ types / response», а затем снова установив их.

yarn remove @types/react
yarn add --dev @types/react

Что касается меня, у меня были типы реакции, дублированные в react-redux, react и react-intl, когда я обновлял react-intl. Наименее навязчивое исправление, которое у меня сработало до сих пор, - это запустить следующее:

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

Если полученное различие файла блокировки выглядит правильно, удалите node_modules, затем yarn, чтобы получить свежие пакеты из дедуплицированного файла блокировки.

Спасибо за это. Это сразу решило проблему. Следует отметить как ответ

karrde00 14.11.2019 23:13

В связи с вопросом, запуск npm list @types/react из каталога вашего package.json должен отображать повторяющиеся определения типов, найденные в вашем проекте.

У меня был запрос конфликтующей версии для реакции в другом используемом мной модуле. Исправление этого и повторная установка с помощью пряжи мне тоже не помогли.

Однако использование NPM вместо Yarn решило эту проблему для меня.

Надеюсь, это кому-то поможет.

У меня сработало удаление react и @types/react из package.json, а затем в zsh:

rm -rf node_modules/**/react
npm i react @types/react
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.

  1. Пошел в каталог ClientApp в моем проекте ClientApp\node_modules\@types
  2. Сделал резервную копию каталога react, а затем удалил его
  3. Очистить + построить + запустить проект, и больше ошибок не будет.
  4. Я восстановил папку react после того, как ошибка исчезла, и кажется, что ошибка исчезла навсегда, поэтому мне кажется, что это типичная волшебная ошибка где-то во вселенной :-)

Больше ничего менять в конфигурационных файлах мне не пришлось.

Для меня это вызвано только упомянутым @types/react-redux. Исправлено npm i --save-dev @types/react, поэтому package.json выглядит так:

  ...
  "devDependencies": {
    "@types/react": "^16.9.19",
    "@types/react-redux": "^7.1.7"
    ...
  }

У меня возникла эта проблема при работе со связанными зависимостями. Мой связанный пакет находится в репозитории lerna, и у него был @types/react как devDependency. Я добавил @types/react как peerDependency, переключил свой рабочий процесс на ялк и смог продолжить.

В нашем случае мы исправили это

  1. Перенос всех пакетов @types/* в devDependencies

  2. rm -rf yarn.lock и rm -rf node_modules

  3. Снова запустите yarn install

Использование пряжа-дедупликация устранило проблему для меня.

Шаги:

  1. Необязательно установить пакет yarn-deduplicate или использовать npx на втором шаге
npm install -g yarn-deduplicate

или

yarn global add yarn-deduplicate
  1. Запускаем yarn-deduplicate
yarn-deduplicate yarn.lock --packages @types/react yarn.lock

или

npx yarn-deduplicate --packages @types/react yarn.lock
  1. Удалить папку node_modules
rm -rf node_modules
  1. Переустановите зависимости
yarn install

В моем случае ошибка появилась, когда номера версий @types/react (v17.0.3) и @types/react-dom (v17.0.2) не были синхронизированы.

Чтобы решить эту проблему, я удалил @types/react, потому что он поднимается с @types/react-dom. В этом можно убедиться, запустив yarn why @types/react.

Другие вопросы по теме