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. В младших версиях библиотеки обычно работают так же, как раньше, но это не всегда должно быть так.

Другие вопросы по тегам