Некоторый фон:
Я начал свой проект с клона этого хранилища . Вот пример кода . Через некоторое время я понял, что используемый им vue-cli-service оказался старым. (Они даже переименовали его в «@ vue / cli-service»). Итак, я запустил обновление npm. Код заставил меня использовать npm run serve
для запуска службы. Это, по-видимому, эквивалентно npx vue-cli-service serve
. Когда я сделал это, он не мог загрузить некоторые вещи начальной загрузки. Я переустановил бутстрап (npm install bootstrap@version
(у меня нет доступа к той строке, которую я использовал). Затем он сказал, что не может найти '@ vue / cli-plugin-babel'. Я увидел это прямо в папке node_modules.
Я исправил это, используя этот процесс:
- Я бегал
npm update
.
- Сначала говорилось, что не удалось найти шрифт (больше не нужно указывать конкретные детали). Ошибка, связанная с файлом bootstrap.css.
- Я переустановил бутстрап.
- Я запускаю
npm run serve
, и он говорит "Не удается найти модуль '@ vue / cli-plugin-babel'"
- Я вижу '@ vue / cli-plugin-babel' в папке node_modules
- Я запускаю
npm list --depth=0
, а '@ vue / cli-plugin-babel' не отображается.
Я * вижу это
npm cache clean --force
само по себе не привело к возобновлению работы сайта. Он по-прежнему говорит «Не удается найти модуль« @ vue / cli-plugin-babel »».
- После топ SO ответ здесь заставил мой сайт снова работать.
rm -rf node_modules/
npm cache clean
(затем заменяется на npm cache verify
по приглашению npm)
npm install
(Интересно, можно ли было проигнорировать «rm -rf node_modules /» и просто сделать последние два шага).
- Я запускаю
npm run serve
, и сайт снова работает.
- После повторного запуска списка npm --depth = 0, больше нет проблем UNMET DEPENDENCY, как с # 6 .
Также в этом вопросе и ответах люди говорили о реструктуризации (переупорядочении) файла package.json. В верхнем ответе он говорит, что одним из возможных решений является «Перестройка вашего package.json. Разместите все высокоуровневые модули (служит зависимостью для других модулей) внизу ». Интересно, относится ли это к моей проблеме.
Мои ожидаемые и фактические результаты:
Когда я обновил его, я действительно ожидал, что он сломается. Я понял.
Но я также ожидал:
- Если там есть модуль узла, он не выдаст мне ошибку.
- Если я запускаю
npm install
, все зависимости будут обрабатываться автоматически.
- Если npm install не сработает, то
npm cache clean --force
сработает. (Примечание: позже я узнал о npm cache verify
).
Я получил:
- Модуль '@ vue / cli-plugin-babel' был там и выдал ошибку, сообщив, что не может его найти.
- (И также 3.) Запуск
npm install
и npm install [unmet-dependency]
не работал до тех пор, пока после 'rm -rf node_modules /' -> `npm verify cache 'и THEN ->' npm install '.
Вот мои догадки:
- @ vue / cli service не проверяет папки напрямую, чтобы увидеть, существует ли модуль (75% вероятность, что это правда)
- @ vue / cli service использует прокси, что-то вроде файла packages.json (но отличается), чтобы проверить, существует ли узел (40%).
- @ vue / cli service кеширует часто используемые вещи. Поэтому, когда я снова запустил его после обновления, он не проверял новые элементы в моей папке, он проверял его кэш. Это не выстраивалось в линию. (10%).
- Для всего вышеперечисленного замените службу @ vue / cli на npm (10%).
Опять же, мой самый большой вопрос: "Как мог аварийно завершить работу службы vue-cli-service из-за модуля '@ vue / cli-plugin-babel', если там есть модуль узла?"
И "Как удаление папки node_modules, проверка кэша и переустановка с помощью npm заставили npx vue-cli-service serve
снова успешно запустить мой сайт (и найти @ vue / vue-plugin-babel)?" .