Как может произойти сбой службы vue-cli-service из-за модуля '@ vue / cli-plugin-babel', если там есть модуль узла? - PullRequest
0 голосов
/ 10 апреля 2019

Некоторый фон:

Я начал свой проект с клона этого хранилища . Вот пример кода . Через некоторое время я понял, что используемый им 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.

Я исправил это, используя этот процесс:

  1. Я бегал npm update.
  2. Сначала говорилось, что не удалось найти шрифт (больше не нужно указывать конкретные детали). Ошибка, связанная с файлом bootstrap.css.
  3. Я переустановил бутстрап.
  4. Я запускаю npm run serve, и он говорит "Не удается найти модуль '@ vue / cli-plugin-babel'"
  5. Я вижу '@ vue / cli-plugin-babel' в папке node_modules
  6. Я запускаю npm list --depth=0, а '@ vue / cli-plugin-babel' не отображается. Я * вижу это
  7. npm cache clean --force само по себе не привело к возобновлению работы сайта. Он по-прежнему говорит «Не удается найти модуль« @ vue / cli-plugin-babel »».
  8. После топ SO ответ здесь заставил мой сайт снова работать.
    1. rm -rf node_modules/
    2. npm cache clean (затем заменяется на npm cache verify по приглашению npm)
    3. npm install (Интересно, можно ли было проигнорировать «rm -rf node_modules /» и просто сделать последние два шага).
  9. Я запускаю npm run serve, и сайт снова работает.
  10. После повторного запуска списка npm --depth = 0, больше нет проблем UNMET DEPENDENCY, как с # 6 .

Также в этом вопросе и ответах люди говорили о реструктуризации (переупорядочении) файла package.json. В верхнем ответе он говорит, что одним из возможных решений является «Перестройка вашего package.json. Разместите все высокоуровневые модули (служит зависимостью для других модулей) внизу ». Интересно, относится ли это к моей проблеме.

Мои ожидаемые и фактические результаты:

Когда я обновил его, я действительно ожидал, что он сломается. Я понял.

Но я также ожидал:

  1. Если там есть модуль узла, он не выдаст мне ошибку.
  2. Если я запускаю npm install, все зависимости будут обрабатываться автоматически.
  3. Если npm install не сработает, то npm cache clean --force сработает. (Примечание: позже я узнал о npm cache verify).

Я получил:

  1. Модуль '@ vue / cli-plugin-babel' был там и выдал ошибку, сообщив, что не может его найти.
  2. (И также 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)?" .

...