Github сообщает мне, что зависимость в моем файле package-lock.json уязвима и устарела. Проблема в том, что если я сделаю npm install
или npm update
, ни один из них не обновит зависимость в файле package-lock.json.
Я много гуглил по этому поводу, а также удалил файл и сделал npm install
.
Если кто-то может помочь решить эту проблему, я очень признателен. Речь идет о пакете Hoek, которого у меня нет в моем файле package.json.
Спасибо заранее.
node.js
npm
package.json
package-lock.json
Raph117
источник
источник
Ответы:
Похоже, что Hoek является зависимостью одной из ваших зависимостей (так, пакет, который у вас есть в вашем package.json, требует его от собственного package.json).
Вы уже безуспешно пытались удалить / переустановить и обновить зависимости проекта, поэтому кажется, что для рассматриваемой зависимости пакета указана явная или максимальная версия.
Не видя package.json для каждой из ваших зависимостей, было бы сложно дать дальнейшие советы о том, как принудительно обновить.
Изменить: чтобы помочь вам определить, какие пакеты используют какие зависимости, вы можете использовать
ls
команду NPM : https://docs.npmjs.com/cli/lsНапример, чтобы узнать, какие пакеты используют Hoek:
npm ls hoek
Изменить 2: Как правильно указывает Ulysse BN, если у вас есть NPM версии 6 или новее, вы можете использовать,
npm audit fix
чтобы попросить NPM попытаться исправить уязвимости для вас.Изменить 3: Те, кто это читают, также должны проверить ответ JBallin ниже. Он расширяет информацию, которую я здесь дал, и является (на мой взгляд) более структурированным ответом, который лучше отвечает на вопрос OP. Однако - если вы хотите быстро исправить - этого ответа должно хватить.
источник
package.json
что зависит от конкретной (уязвимой) версии Growl. Ваш ответ находится на правильном пути, и вы, возможно, смогли бы его достичь, если бы вы могли поделиться командой, которая покажет, какие пакеты вpackage.json
зависимости от уязвимогоpackage-lock.json
.TL; DR: обновите родительский пакет, используя
npm i $PARENT_PKG_NAME
.Заметка
При обновлении зависимостей вы должны просмотреть CHANGELOG на предмет критических изменений.
Диагностика
npm audit
откроет как уязвимый пакет (обратите внимание, что для этого вам понадобится файл package-lock.json, поэтому вам нужно будет запуститьnpm i
), так и пакет, от которого он зависит (если применимо). Обратите внимание, что вы также можете использовать,npm ls $CHILD_PKG_NAME
чтобы увидеть его родительские зависимости.Попытка быстрого исправления
npm audit fix
иnpm audit fix --force
стоит попробовать, но иногда это нужно делать вручную (см. ниже).Ручное исправление
Скорее всего, родительский пакет уже исправил свои зависимости (вы можете проверить это, перейдя на их GitHub и просмотрев последние коммиты - или просто посмотрев, исправляет ли это это), поэтому вы можете просто запустить,
npm i $PARENT_PKG_NAME @$NEW_VERSION
и он обновит вашу блокировку пакета .json.Если родитель не исправил уязвимость
Если специалист по сопровождению не реагирует на запросы, вы можете рассмотреть возможность использования альтернативного пакета, который выполняет то же самое, или разветвления пакета и самостоятельного обновления уязвимости.
Проверить исправление
Теперь вы можете убедиться, что он работает, запустив его
npm audit
и убедившись, что уязвимостей нет. Зафиксируйте свои изменения, отправьте их на GitHub, обновите свои уведомления / предупреждения, и они должны исчезнуть!источник
Если у вас npm @ 6 или новее, вы можете использовать его
npm audit fix
для решения ваших проблем с безопасностью.источник
Использование:
npm установит последнюю версию hoek и ваш package.lock.json обновится.
источник
У меня возникла эта проблема, и я обнаружил, что это произошло потому, что на сервере, на котором я запускал npm, была установлена старая версия npm - package-lock.json поддерживается только более новыми версиями.
источник
Вы пробовали это: перейдите в корень вашего проекта, удалите
package-lock.json
файлnode_modules
и.cache
папки, а затемnpm install
.источник
Чтобы проверить уязвимые пакеты npm, просто используйте следующие команды:
Чтобы исправить уязвимые пакеты npm, просто используйте следующие команды, которые также исправят package-lock.json:
источник
Отредактируйте
package-lock.json
вручную и обновите уязвимую версию пакета до исправленной, а затем используйтеЭто установит пакеты в соответствии
package-lock.json
с игнорированием вpackage.json
первую очередь. Затем используйтеопять же, чтобы убедиться, правильно ли это сделано. Если это не помогает, используйте другие предложенные решения.
Дополнительная информация здесь:
https://blog.npmjs.org/post/171556855892/introduction-npm-ci-for-faster-more-reliable
или здесь: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
источник
После установки новых зависимостей выполните следующую команду, чтобы обновить файл package-lock.json:
источник