Как исправить уязвимый пакет npm в моем package-lock.json, который не указан в package.json?
Гитуб говорит мне, что зависимость в моем файле package-lock.json уязвима и устарела. Проблема в том, что если я делаю npm update
npm install
или npm update
, ни один из них не обновляет зависимость в файле package-lock.json.
Я сделал много поисковых запросов по этому вопросу, а также удалил файл и выполнил npm install
.
Если кто-то может помочь разрешить это, я бы очень благодарен. Пакет, о котором идет речь, это Hoek, которого у меня нет в файле package.json.
Спасибо заранее.
Ответы
Ответ 1
Похоже, что Hoek является зависимостью одной из ваших зависимостей (поэтому пакет, который есть в вашем package.json, требует его из своего собственного package.json).
Вы уже пытались удалить/переустановить и обновить зависимости проекта безуспешно, поэтому кажется, что для рассматриваемой зависимости пакета указана явная или максимальная версия.
Не видя package.json для каждой из ваших зависимостей, было бы сложно дать дальнейшие рекомендации о том, как форсировать обновление.
Изменить:
Чтобы помочь вам определить, какие пакеты используют какие зависимости, вы можете использовать команду NPM ls
: https://docs.npmjs.com/cli/ls
Например, чтобы увидеть, какие пакеты используют Hoek:
npm ls hoek
Изменить 2:
Как правильно указывает Ulysse BN, если у вас NPM версии 6 или новее, вы можете использовать npm audit fix
, чтобы попросить NPM попытаться исправить уязвимости для вас.
Изменить 3:
Те, кто читает это, должны также проверить ответ JBallin ниже. Он расширяет информацию, которую я дал здесь, и является (на мой взгляд) более структурированным ответом, который лучше отвечает на вопрос ОП. Однако - если вы хотите быстро исправить - этого ответа должно быть достаточно.
Ответ 2
TLDR: обновите родительский пакет, используя npm i $PARENT_PKG_NAME
.
Диагноз
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
и он обновит ваш пакет-lock.json.
Подтвердить исправление
Теперь вы можете проверить, работает ли он, запустив npm audit
и убедившись, что никаких уязвимостей не обнаружено. Зафиксируйте свои изменения, отправьте их на GitHub, обновите ваши уведомления/оповещения, и они должны исчезнуть!
Ответ 3
Если у вас есть npm @6 или более поздняя версия, вы можете использовать npm audit fix
для npm audit fix
для своих проблем безопасности.
Ответ 4
Использование:
npm я hoek
npm установит последнюю версию hoek и ваш пакет.lock.json обновится.
Ответ 5
У меня была эта проблема и я обнаружил, что это потому, что на сервере, на котором я запускал npm, была старая версия npm на it- package-lock.json поддерживается только более новыми версиями.
Ответ 6
Вы пробовали это: перейдите в корневой каталог вашего проекта, удалите файл package-lock.json
, node_modules
и .cache
, а затем npm install
.
Ответ 7
После установки новых зависимостей выполните следующую команду, чтобы обновить файл package-lock.json:
npm update package-lock.json
Ответ 8
удалите файл блокировки и установите его снова с помощью NPM.
Вы можете проверить и добавить последнюю версию с помощью: https://www.npmjs.com/package/npm-check-updates