У меня возникла проблема, когда некоторые различия в моих пакетах npm между двумя машинами, используемыми для создания приложения, приводят к тому, что части моего веб-сайта ведут себя по-разному. Я пытаюсь выяснить, в чем причина разницы между пакетами, которые устанавливает npm, я убедился, что использую одни и те же версии nvm, nodejs и npm (и что одна и та же версия активна с nvm, используя npm list -g --depth=0
). Я проверил, что оба имеют одинаковые глобально установленные пакеты в одинаковых версиях. Я установил номера версий в package.json, чтобы они были исправлены в соответствии с тем, что я указываю (без '^' или '~' в номерах версий). Когда я делаю npm i
в проекте (даже после принудительной очистки кеша npm), я получаю различия между двумя машинами для того, что устанавливает npm:
added 1061 packages from 1024 contributors and audited 26052 packages in 121.826s found 5 vulnerabilities (2 low, 3 moderate) added 1110 packages from 1033 contributors and audited 17105 packages in 196.763s found 6 vulnerabilities (2 low, 3 moderate, 1 high)
Как мне найти:
@Ferrybig именно в этом и заключается проблема. Для всех, кто читал, что package-lock.json не обязательно должен находиться в системе контроля версий, если вы не хотите таких проблем, поместите его туда.
npm i --loglevel verbose
было полезно увидеть, что именно устанавливает npm
Если npm вызывает разные установки, убедитесь, что вы действительно фиксируете файл package-lock.json
и что на всех компьютерах установлена одна и та же основная версия npm.
Это становится проблемой, так как файл блокировки на самом деле содержит точные установленные версии, а разные версии потенциально могут иметь разные зависимости.
Когда этот файл блокировки был представлен, разработчики привыкли помещать этот файл в свой gitignore, поскольку это был неожиданный файл, созданный npm, и что несколько версий npm используют разные хэши в файле блокировки.
Вы уверены, что фиксируете файл блокировки пакета? Я видел проекты, в которых люди помещали это в свой gitignore.