Что означает «имеет неудовлетворенную зависимость однорангового узла» при установке пакета с yarn?

У меня есть свежая установка yarn (через npm install yarn -g), и я попытался установить несколько пакетов с

yarn add vue-loader babel-loader style-loader css-loader file-loader webpack

Во время установки я получил несколько предупреждений, например

warning "[email protected]" has unmet peer dependency "vue-template-compiler@^2.0.0".

Что именно это означает, и в частности: почему yarn не устанавливает эти зависимости самостоятельно? (если они необходимы)

родственный вопросnpm) на том же субъект дает несколько ответов, в которых предлагается: i) обновить npm ii) удалить node_modules, поскольку в npm есть ошибка обработки зависимостей.

Каков статус таких предупреждений в yarn? Это действительно предупреждение (= что-то, что я могу отбросить)? Я не могу их отбросить (сборка webpack не удалась) и мне приходится устанавливать их вручную. В то же время было установлено довольно много зависимостей, поэтому я не понимаю, почему некоторые из них были пропущены (хотя они устанавливаются вручную)


person WoJ    schedule 25.10.2017    source источник
comment
Привет, @WoJ, ты выяснил, в чем причина? Я тоже сомневаюсь ...   -  person Bruno Belotti    schedule 27.11.2017
comment
Я не являюсь носителем языка, и я только что заметил, что X имеет сообщение Y о неудовлетворенной одноранговой зависимости Y на моем ноутбуке. Пока я не поискал в Google этот вопрос SO, я думал, что предложение означает, что [установка] X вызвала невыполнение зависимостей Y, в то время как они означают, что X имеет неудовлетворенные зависимости одноранговых узлов ...   -  person Grzegorz Oledzki    schedule 19.02.2019
comment
Ух ты, @BrunoBelotti - сегодня тоже 27 ноября! Я здесь, чтобы увидеть ответ на то же самое: 'D   -  person Akhila    schedule 27.11.2020
comment
Возможный дубликат: stackoverflow.com/questions/42361942/   -  person Kalinda Pride    schedule 16.06.2021


Ответы (1)


Что такое взаимозависимость

Здесь есть полезные сведения о типах зависимостей, а также здесь представлена ​​информация о зависимостях одноранговых узлов, но вкратце:

Зависимость: библиотека / пакет, который необходимо запустить для проекта.
Зависимость от одноранговых узлов: используется для обозначения библиотеки / пакета, к которым будет подключаться ваш проект.

Пакет vue-loader имеет одноранговую зависимость от vue-template-compiler - vue-loader действует как плагин для vue-template-compiler

Почему они не установлены по умолчанию

Одноранговые зависимости были автоматически установлены до npm @ 3 (за которым последовала пряжа в). Это было остановлено из-за часто сбивающего с толку поведения. Например, установка другого плагина с конфликтующим требованием приведет к ошибке.

Мы также изменим поведение peerDependencies в npm @ 3. Мы больше не будем автоматически загружать одноранговые зависимости. Вместо этого мы предупредим вас, если одноранговая зависимость еще не установлена. Это требует, чтобы вы самостоятельно разрешали конфликты peerDependency вручную, но в конечном итоге это должно снизить вероятность того, что вы попадете в сложную ситуацию с зависимостями ваших пакетов. [13 февраля 2015 г.]

Обновлять

Согласно здесь npm @ 7 теперь устанавливает одноранговые зависимости.
Чтобы узнать, почему это решение стоит, см. здесь

person Leighton    schedule 13.02.2018
comment
Это просто предупреждение, но обычно, если зависимость не выполняется, выполнение завершается ошибкой. Так почему же кажется возможным просто проигнорировать это предупреждение? - person Jean Paul; 06.10.2020
comment
Что я должен сделать? Я использую пряжу. Я должен проигнорировать это или установить вручную ?? Вы упомянули только об обновлении npm, а не о пряжи. Вопрос по пряже. - person Akhila; 27.11.2020
comment
Ничего о пряжи! Вопрос в пряже, а не в нпм. - person Luciens; 10.05.2021
comment
@JeanPaul 2 возможных причины. Во-первых, если одноранговая зависимость не является обязательной. Во-вторых, если одноранговая зависимость является зависимостью от какого-то другого установленного пакета, но не указана в package.json, вы все равно увидите предупреждение, даже если пакет доступен. - person Mr5o1; 29.07.2021