Сбой установки Npm с узлом 15 (не LTS) «@angular-devkit /build-angular»: «~ 0.1000.0»

#node.js #npm

#node.js #нпм

Вопрос:

сбой установки npm с приведенной ниже зависимостью «@angular-devkit /build-angular»: образец package.json

   {
  "name": "myApp",
  "version": "0.0.1",
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1000.0"
  }
}
 

Я использую node V15.5.1 npm v7.3.0

Я получаю следующие ошибки :

ОШИБКА npm! Найдено: typescript@4.0.5 нпм ОШИБАЕТСЯ! ошибка node_modules / typescript npm! одноранговый машинописный текст @»> = 3.9 <4.1″ из @angular/compiler-cli@10.2.4 нпм ОШИБАЕТСЯ! ошибка node_modules/@angular/compiler-cli npm! peer @angular/compiler-cli@»> = 10.0.0-next.0 < 11″ из @angular-devkit/build-angular@0.1000.8 нпм ОШИБАЕТСЯ!
ошибка node_modules/@angular-devkit/build-angular npm! ОШИБКА npm! Не удалось разрешить зависимость: ошибка npm! одноранговый машинописный текст @»> = 3.9 < 3.10″ из @angular-devkit/build-angular@0.1000.8 нпм ОШИБАЕТСЯ! node_modules/@angular-devkit/build-angular

не уверен, почему node / npm ищет typescript 4.0.5 вместо версии, которая может соответствовать обоим диапазонам. (одноранговый машинописный текст @»> = 3.9 <4.1″ и одноранговый машинописный текст @»> = 3.9 < 3.10″) работает ли это так, как ожидалось.

я могу запустить установку npm с флагом —legacy-peer-deps .

это проблема или она работает так, как задумано. почему npm не может выбрать версию, которая подходит для обоих случаев

Ответ №1:

Используйте LTS-версию node, в настоящее время 14.15.4. Изменение версии зависит от вашей ОС и диспетчера пакетов, но, по крайней мере, на macOS и Homebrew это выглядит так:

 brew update
brew install node@14
brew link --overwrite node@14
 

Комментарии:

1. спасибо за ваш ответ. мне хотелось бы знать, это ожидаемое поведение в новых версиях или какая-то ошибка с npm.

2. Ах, хорошо, я понял, что вопрос был «как заставить это работать». Для меня это, безусловно, похоже на ошибку в npm и похоже на кого-то (вас?) сообщил об этом: github.com/npm/cli/issues/2510 Но в целом я думаю, что это хорошая идея — придерживаться LTS-версий при разработке angular.