shell-quote 1.7.2 уязвимости - невозможно исправить с помощью принудительных решений
У меня есть приложение nextjs, в котором есть «next»: «^ 10.2.0». Он, в свою очередь, имеет кавычки в качестве транзитивной зависимости и версию, установленную в 1.7.2, которая имеет некоторые критические уязвимости безопасности. Сейчас я должен это исправить, а оболочка версии 1.7.3 не имеет этих уязвимостей. Итак, я добавил это
"preinstall": "npx npm-force-resolutions"
и
"resolutions": {
"shell-quote": ">=1.7.3"
}
в package.json.
Но он по-прежнему выдает ошибку, и когда я проверяю npm ls shell-quote, я вижу, что
├─┬ @storybook/react@6.4.9
│ └─┬ react-dev-utils@11.0.4
│ └── shell-quote@1.7.2
└─┬ next@10.2.3
└─┬ @next/react-dev-overlay@10.2.3
└── shell-quote@1.7.2 deduped
Означает ли это, что [электронная почта защищена] не может иметь цитату оболочки 1.7.2? Можно ли сейчас исправить эту проблему без обновления nextjs?
1 ответ
Вам не нужно использовать разрешения, поскольку вы меняете не пакет, а только его версию. Перепрошивка здесь хороша. Итак, добавьте следующий блок кода в package.json
"overrides": {
"react-dev-utils@11.0.4": {
"shell-quote": "1.7.3"
},
"@next/react-dev-overlay@10.2.3": {
"shell-quote": "1.7.3"
}
},
Теперь удалите node_modules с помощьюrm -rf node_modules
. Тогда у вас есть два варианта:
- Полностью удалить. Таким образом, вы потеряете заблокированные версии и для других ваших пакетов.
- Или откройте и удалите все записи с помощью
react-dev-utils
,node_modules/react-dev-utils
,@next/react-dev-overlay
,node_modules/react-dev-overlay
,shell-quote
иnode_modules/shell-quote
. Таким образом, вы сохраните заблокированные версии для других пакетов.
И беги, когда бежишьnpm list shell-quote
, вы увидите, что все пакеты используют его сv1.7.3
.
Так как будет редактировать вашpackage-lock.json
для этого изменения у вас будет полныйpackge-lock.json
и вам не придется редактировать его при следующем запускеnpm install
.
Я редактировал наш репозиторий, чтобы таким образом избавиться от уязвимостей, и он отлично работает. Я использовал этот ответ из другого вопроса SO.
Конечно, вы должны убедиться, что эти версии совместимы друг с другом. Потому что сoverrides
, npm не проверяет версии, вы принудительно это делаете. Например, вы должны убедиться, чтоreact-dev-utils@11.0.4
может работать сshell-quote@1.7.3
. В младших версиях библиотеки обычно работают так же, как раньше, но это не всегда должно быть так.