почему я должен запустить "npm install" дважды, чтобы мой пакет успешно установился
В первый раз, когда я "npm install" package_1, я получаю следующую ошибку.
npm ERR! path C:\Users\john_\Documents\GitHub\why_npm_nesting_fails\package_1\node_modules\.staging\bignumber.js-55edd243
Я не использую "bignumber", поэтому предположим, что это зависимость от MySQL. Второй раз, когда я "npm install" package_1, он проходит.
added 2 packages and audited 30 packages in 0.722s
Это как-то связано с mysql, так как после удаления этой зависимости все работает с первого раза.
Вот диаграмма зависимостей:
Урезанный проект можно найти по адресу https://github.com/johngrabner/why_npm_nesting_fails. Только 4 файла package.json по 7 строк в каждом, включая {}, демонстрируют эту проблему. то есть: 4 файла с 1 строкой каждый, что демонстрирует эту проблему.
Эта проблема мешает мне аккуратно поместить мой проект в Docker-контейнеры, так как первая "установка npm" не удалась. Обходной путь установки "package_4", затем установки "package_3" и т.д. Работает, но я боюсь, что не понимаю, что вернется и укусит меня.
Вышеуказанная проблема возникает как в Windows, так и в Docker Node: 9.4.
Ответы
Ответ 1
Вы обязательно должны всегда хранить свой package-lock.json
.
Вот хорошее описание этого файла и его полезность: package-lock.json - манифест манифеста
Важными моментами являются:
- Опишите единственное представление дерева зависимостей, чтобы товарищи по команде, развертывания и непрерывная интеграция гарантированно устанавливали точно такие же зависимости
а также
- Оптимизируйте процесс установки, позволяя npm пропускать повторяющиеся разрешения метаданных для ранее установленных пакетов
Удаляя этот файл, вы (вроде) путаете NPM.
Проще сохранить файл package-lock.json
, чем заниматься всеми проблемами, которые появятся, если вы этого не сделаете :)
Пакет-lock.json
"Этот файл предназначен для размещения в исходных хранилищах"
(https://docs.npmjs.com/files/package-lock.json)