Дубликат идентификатора "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
- ...
Откуда это? Как я могу избежать этого?
Я хочу узнать, откуда эта ошибка, чтобы я мог сообщить об этом правильному объекту, но я не знаю, с чего начать.
Что еще я могу попробовать?
Ответы
Ответ 1
Это похоже на то, что Yarn разрешает несколько версий пакета; @types/react
в этом конкретном случае. Пряжа решает @types/react
ваш пакет.json и как зависимость от @types/react-dom
.
Возьмите следующий фрагмент из моего пакета. Json:
"devDependencies": {
"@types/react": "^15.0.16",
"@types/react-dom": "^0.14.23"
...
}
Пряжа, созданная после yarn install
содержит нечто похожее на это:
"@types/[email protected]^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/[email protected]*":
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/[email protected]^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"
@types/react
: "16.4.14"
и "15.6.19"
. Это приводит к конфликтам типа, о которых вы говорили.
Решение состоит в том, чтобы добавить поле разрешений к вашему package.json, чтобы сообщить Пряжам разрешить определенную версию @types/react
. Возьмем следующий образец:
"resolutions": {
"@types/react": "^15.0.16"
}
Запустите yarn install
. Обратите внимание на изменение файла yarn.lock:
"@types/[email protected]^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/[email protected]*", "@types/[email protected]^15.0.16":
version "15.6.19"
resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.19.tgz#a5de18afe65b0f29767328836b48c498a5d3a91b"
Пряжа теперь разрешает ту же версию "15.6.19"
для обеих зависимостей "@types/[email protected]^15.0.16"
"@types/[email protected]*"
и "@types/[email protected]^15.0.16"
.
Я хотел бы знать, почему это необходимо. Я бы ожидал, что Пряжа поймет, что может разрешить зависимость "@types/react" "*"
с "@types/[email protected]^15.0.16"
вместо того, чтобы разрешать ее с последней версией @types/react
.
Ответ 2
Это, кажется, проблема с машинописными текстами.
Моим текущим обходным "skipLibCheck": true
является добавление "skipLibCheck": true
для tsconfig.json
.
Я хочу подчеркнуть, что это всего лишь обходное решение, а не проблема в проблеме.
Ответ 3
Самый простой способ исправить это для меня - удалить каталог node_modules и файлы с файлами narn.lock/package-lock, а затем выполнить установку пряжи, чтобы переустановить все узловые модули.
Ответ 4
У меня та же проблема после yarn upgrade @types/react-router-dom
. git diff
показывает несколько версий разрешения @types/react
. В моем случае, yarn upgrade @types/react
эту проблему. Удаление yarn.lock
должно помочь.
Кажется, что новая (без yarn.lock
) установка разрешит пакеты в согласованное состояние, но частичное обновление не разрешит зависимости глобально. Таким образом, ручная настройка может быть необходима для обновления всех задействованных пакетов.
Ответ 5
Я получил ту же ошибку. Мне удалось это исправить, удалив мой @types/реагировать и затем снова установив их.
yarn remove @types/react
yarn add @types/react
Ответ 6
Для меня у меня были типы реакций, дублированные в react-redux
, react
и react-intl
, когда я обновил react-intl
. Наименее навязчивое исправление, которое до сих пор работало для меня, это запустить это:
npx yarn-deduplicate --packages @types/react yarn.lock
Если полученная разница в файле блокировки выглядит правильно, продолжайте и удалите node_modules
, затем yarn
, чтобы получить свежие пакеты из дедуплицированного файла блокировки.
Ответ 7
В моем случае я получил сообщение об ошибке, указывающее, что "LibraryManagedAttributes" объявлен в 2 разных местах. Следуя по пути, я понял, что установленный модуль также имеет файл package.json, который также добавляет "@types/реагировать" как dep, и его версия не совпадает с версией в корневом файле package.json. Я поменял эти две версии на одну и ту же, и проблема была решена.
Ответ 8
Lo resolví usando соло пряжа удалить @типы/реагировать
Ответ 9
Что касается вопроса, то запуск npm list @types/react
из каталога вашего package.json должен перечислить дубликаты определений типов, найденных в вашем проекте.