#npm #npm-install
#npm #npm-install
Вопрос:
У меня возникла проблема, из-за которой некоторые различия в моих пакетах npm между двумя машинами, используемыми для создания приложения, приводят к тому, что части моего веб-сайта ведут себя по-разному. Я пытаюсь выяснить, что вызывает разницу между пакетами, которые устанавливает npm, я проверил, что я использую одни и те же версии nvm, nodejs и npm (и что одна и та же версия активна при использовании nvm npm list -g --depth=0
). Я проверил, что оба имеют одинаковые глобально установленные пакеты в одних и тех же версиях. Я установил номера версий в package.json, которые должны быть исправлены в соответствии с тем, что я указываю (нет ‘^’ или ‘~’ в номерах версий). Когда я делаю npm i
это в проекте (даже после принудительной очистки кэша npm), я получаю различия между двумя машинами для того, что устанавливает npm:
добавлено 1061 пакет от 1024 участников и проверено 26052 пакета за 121 826 секунд , обнаружено 5 уязвимостей (2 слабых, 3 умеренных) добавлено 1110 пакетов от 1033 участников и проверено 17105 пакетов за 196.763 с , обнаружено 6 уязвимостей (2 низкие, 3 умеренные, 1 высокая)
Как мне найти:
- Каковы эти различия (помимо попытки сравнить папку node_modules)
- Что вызывает различия в первую очередь. Насколько я понимаю, при использовании npm и исправлении версий не должно возникать подобных проблем.
Комментарии:
1. Вы уверены, что фиксируете файл блокировки пакета? Я видел проекты, в которых люди помещали это в свой gitignore
2. @Ferrybig это именно то, в чем заключается проблема. Для тех, кто читал, где package-lock.json не обязательно должен находиться в системе управления версиями, если вы не хотите подобных проблем, поместите его туда.
3.
npm i --loglevel verbose
было полезно узнать, что именно устанавливает npm
Ответ №1:
Если npm вызывает разные установки, убедитесь, что вы действительно фиксируете файл package-lock.json
и что все компьютеры имеют одну и ту же основную версию npm.
Это становится проблемой, поскольку файл блокировки фактически содержит точные установленные версии, а разные версии потенциально имеют различия в своих зависимостях.
Когда был представлен этот файл блокировки, у разработчиков вошло в привычку помещать этот файл в свой gitignore, поскольку это был неожиданный файл, созданный npm, и что несколько версий npm используют разные хэши в файле блокировки.