Вот мой 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 — См. 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?
Не знаю, где вы ищете, но Enzyme требует Cheerio 1 (rc) начиная с версии 3.0.0 ферментjs.github.io/enzyme/CHANGELOG.html#300
@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
Как сейчас yarn why cheerio
сейчас говорит Found "docusaurus#[email protected]"
, но если я нажму Ctrl + F в github.com/facebook/docusaurus/blob/v1.14.7/package.json я вообще не увижу «ура», из чего Я делаю вывод, что чирио не является прямой зависимостью от докузавра.
Кажется, вы многого не понимаете в зависимостях. Добавление прямых зависимостей не меняет ваши транзитивные зависимости - прямая установка Enzyme 2 не означает, что ваши собственные зависимости не нужны и, например, установка Enzyme 3, просто теперь у вас есть (по крайней мере) две версии в дереве. Вы можете изучить явные разрешения, но тогда, скорее всего, что-то начнет ломаться (поскольку принудительная установка транзитивной зависимости к неправильной основной версии, вероятно, приведет к тем же изменениям API, которые вызвали начало приращения).
@jonrsharpe - yarn why cheerio
, похоже, имеет ограниченную полезность. Если херио требуется для зависимости докузавра или зависимости от зависимости, то, возможно, yarn why cheerio
следует так сказать. Например, «[email protected] требуется из-за пакета x, который требуется для пакета y, который требуется для пакета z», но я думаю, это слишком много! 🙄 С таким же успехом можно просто попросить кого-нибудь вручную изучить каждую из примерно 800 новых папок, которые этот документузавр добавляет в node_modules, на предмет полезности yarn why cheerio
..
в файле packages.json добавьте это в существующее разрешение и devDependities.
"resolutions":{
"cheerio": "<1.0.0"
}
and--
"devDependencies":{
"cheerio": "<1.0.0"
}
Спасибо, это сработало!
Что говорит почему?