Почему Yarn пытается установить пакет 1.0.0, когда мой package.json ссылается на ^0.22.0?

Вот мой package.json:

{
  "scripts": {
    "examples": "docusaurus-examples",
    "start": "docusaurus-start",
    "build": "docusaurus-build",
    "publish-gh-pages": "docusaurus-publish",
    "write-translations": "docusaurus-write-translations",
    "version": "docusaurus-version",
    "rename-version": "docusaurus-rename-version"
  },
  "devDependencies": {
    "docusaurus": "^1.14.7",
    "cheerio": "^0.22.0"
  },
  "dependencies": {
    "react-treebeard": "^3.2.4"
  }
}

Когда я это делаю yarn install, я получаю эту ошибку:

error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.17". Got "16.20.2"
error Found incompatible module.

В этом есть смысл — я использую Node.js 16.20.2 и согласно примечаниям к выпуску Cheerio 1.0.0 был выпущен несколько дней назад и в нем увеличена минимально необходимая версия Node.js.

В идеале я бы обновил версию Node.js, которую использую, но при этом у меня возникли ошибки, а затем я сделал это yarn build.

Но почему yarn install пытается установить Cheerio 1.0.0, хотя я ясно говорю ему установить 0.22.0? Я попробовал ^0.22.0, ~0.22.0 и 0.22.0.

Возможно, одна из зависимостей Docusaurus требует Cheerio 1.0.0, но если бы это было так, то не должен ли я получать какую-то ошибку «несовместимые требования» вместо того, что я получаю?

Что говорит почему?

jonrsharpe 11.08.2024 22:11

@jonrsharpe — См. astebin.com/AyEjpThd . Я вижу, что в package.json truncate-html 1.1.0 требуется Cheerio ^1.0.0-rc.12, тогда как для package.json truncate-html 1.0.4 требуется 0.22.0, поэтому я добавил "truncate-html": "1.0.4" в свой собственный package.json. Сделав это, я получаю Pastebin.com/Mt0piJRV, что для меня не имеет никакого смысла. Оба раза упоминается enzyme#[email protected], но для package.json самой последней версии требуется Cheerio ^0.22.0, так как же он получает 1.0.0?

neubert 11.08.2024 23:38

Не знаю, где вы ищете, но Enzyme требует Cheerio 1 (rc) начиная с версии 3.0.0 ферментjs.github.io/enzyme/CHANGELOG.html#300

jonrsharpe 11.08.2024 23:55

@jonrsharpe — Я только что нажал на теги на github.com/enzymejs/enzyme , но теперь, когда вы упомянули, я вижу, что они изменили свое соглашение о тегах. У них есть тег v2.9.1, а затем тег [email protected]. Несмотря на это, я добавил "enzyme": "2.9.1" в свой package.json, и все равно требуется Cheerio 1.0.0. См. pastebin.com/9RTG7JWB . Вот мой текущий package.json: Pastebin.com/zgXiNJ4D

neubert 12.08.2024 00:01

Как сейчас yarn why cheerio сейчас говорит Found "docusaurus#[email protected]", но если я нажму Ctrl + F в github.com/facebook/docusaurus/blob/v1.14.7/package.json я вообще не увижу «ура», из чего Я делаю вывод, что чирио не является прямой зависимостью от докузавра.

neubert 12.08.2024 00:06

Кажется, вы многого не понимаете в зависимостях. Добавление прямых зависимостей не меняет ваши транзитивные зависимости - прямая установка Enzyme 2 не означает, что ваши собственные зависимости не нужны и, например, установка Enzyme 3, просто теперь у вас есть (по крайней мере) две версии в дереве. Вы можете изучить явные разрешения, но тогда, скорее всего, что-то начнет ломаться (поскольку принудительная установка транзитивной зависимости к неправильной основной версии, вероятно, приведет к тем же изменениям API, которые вызвали начало приращения).

jonrsharpe 12.08.2024 00:25

@jonrsharpe - yarn why cheerio, похоже, имеет ограниченную полезность. Если херио требуется для зависимости докузавра или зависимости от зависимости, то, возможно, yarn why cheerio следует так сказать. Например, «[email protected] требуется из-за пакета x, который требуется для пакета y, который требуется для пакета z», но я думаю, это слишком много! 🙄 С таким же успехом можно просто попросить кого-нибудь вручную изучить каждую из примерно 800 новых папок, которые этот документузавр добавляет в node_modules, на предмет полезности yarn why cheerio..

neubert 13.08.2024 02:23
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
423
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

в файле packages.json добавьте это в существующее разрешение и devDependities.

 "resolutions":{
    "cheerio": "<1.0.0"
}
and--
 "devDependencies":{
    "cheerio": "<1.0.0"
}

Спасибо, это сработало!

GrayFox 14.08.2024 12:49

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