Что означает неправильная одноранговая зависимость при установке пакетов с помощью Yarn?

Я только что клонировал репо, в котором рекомендуется использовать Yarn для установки зависимостей. Когда я запускаю yarn install, все в порядке, но появляется следующее предупреждение:

yarn install v0.20.3
[1/4] ????  Resolving packages...
[2/4] ????  Fetching packages...
[3/4] ????  Linking dependencies...
warning "[email protected]" has incorrect peer dependency "node-sass@^3.4.2".
[4/4] ????  Building fresh packages...
✨  Done in 77.59s.

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

Может кто-нибудь объяснить, что это значит и почему это всего лишь предупреждение, а не ошибка?

Кроме того, следует ли мне попытаться обратиться или сообщить об этом сообществу, стоящему за репозиторием, которое я только что клонировал?


person shrewdbeans    schedule 21.02.2017    source источник
comment
Возможный дубликат: stackoverflow.com/questions/46928390/   -  person Kalinda Pride    schedule 16.06.2021


Ответы (2)


Это всего лишь предупреждение, так как на самом деле это не остановит запуск вашего кода, оно просто для того, чтобы предупредить вас о том, что с вашими зависимостями что-то не так.

По сути, одноранговые зависимости - это способ для пакетов указать: «Чтобы использовать меня, у вас также должна быть установлена ​​x версия пакета y».

Вам следует выполнить обновление до последних версий. Для получения дополнительных сведений см. ссылку зависимости sass-loader

person JonnyFoley    schedule 21.02.2017
comment
В моем проекте установлено: less: 3.0 и less-loader: 4.0.5. При запуске webpack я получаю: [email protected]" has incorrect peer dependency "less@^2.3.1" Почему он говорит о [email protected], потому что у меня установлено 4.0.5? - person Legends; 09.03.2018

Я думаю, что есть пакеты, для которых это не имеет большого значения (если они не отображаются в вашем приложении или маловероятно, что конфликтующие версии создают проблемы, например moment.js), но есть пакеты, такие как React, для которых он Важно то, что все зависимости React совместимы друг с другом, поскольку они могут создавать компоненты, которые должны понимать друг друга.

В вашем случае, вероятно, одна из ваших зависимостей использует sass-loader в другой версии, чем вы указали в своем проекте.

Объявив его как peerDependency, вы можете указать npm, какую версию ожидает ваш проект, и он выдаст вам предупреждение (как вы видели) при возникновении конфликта.

person Flip    schedule 02.10.2019
comment
Мне было интересно, говорит ли он, что информация в пакете package.json имеет неправильную указанную зависимость. Вот откуда он получает информацию, не так ли? Просто прочитав файлы package.json. Это не касается установленных модулей node_modules, которые не включены в package.json. - person Mices; 04.05.2021