Как исправить уязвимый пакет 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