Получил @angular/* version ~9.0.0-next-0 при попытке обновления до Angular Material 8 с помощью ng update. Почему это несоответствие?
Я пытаюсь обновить приложение Angular 7 до Angular 8, используя инструкции здесь. Все прошло хорошо до последнего шага:
нг обновление @ угловой / материал
Это обновило пакеты Angular Material до 8.1.2, но также обновило пакеты @angular/* до довольно странной и нежелательной версии: ~9.0.0-next.0
Это проблематично (мне пришлось избавиться от несущественной зависимости dev, которая требует Angular <= 8), так как я не хочу выходить за пределы версии 8, которая является последней стабильной.
Как я должен заняться этим?
2 ответа
Проблема в том, что перед запуском ng update @angular/material
некоторые из ваших зависимостей уже были на 8.2.0
пока @angular/material
была все еще на версии 7.
ng update @angular/material
по-видимому, только проверяет, есть ли обновление для @angular/material
- не для других зависимостей, которые могут обновляться в пути. Поэтому, когда вы запустили команду, она заметила, что была доступна более новая версия, и приступила к обновлению. Другие зависимости были обновлены так же, как и в версии 8, прежде чем делать обновление (и была доступна версия 9).
Вот почему вы всегда должны следить за тем, чтобы все ваши версии были выровнены перед обновлением.
И просто небольшое наблюдение: 9.0.0-next.0
был выпущен всего за час до того, как вы сделали обновление. Так что, если бы вы сделали это до этого, у вас не было бы ни одной из этих проблем.
Возможное решение этой проблемы - вручную отредактировать package.json
и поменяйте зависимости с версией ^9.0.0-next.0
в ^8.2.0
Сообщество, похоже, считает, что это ошибка. Смотрите: https://github.com/angular/angular-cli/issues/14980 (прокрутите вниз).