Як мені впоратися з встановленням однорідних залежностей у Angular CLI?


77

Я опинився у майже нескінченному циклі помилок під час спроби оновити свій Angular CLI та NPM. Щоразу, коли я оновлююсь, мене зустрічають повідомлення WARN, які говорять мені про встановлення залежностей однолітків (див. Нижче), але кожного разу, коли я встановлюю залежність, я отримую більше повідомлень WARN. Чи є кращий спосіб вирішити цю ситуацію, чи це серйозно займає години?

npm WARN @angular/animations@5.2.1 requires a peer of @angular/core@5.2.1 
but none is installed. You must install peer dependencies yourself.
npm WARN @angular/compiler-cli@5.1.0 requires a peer of typescript@>=2.4.2 
<2.6 but none is installed. You must install peer dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/core@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/common@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/forms@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/angular@0.1.17 requires a peer of @angular-
devkit/core@0.0.29 but none is installed. You must install peer dependencies 
yourself.
npm WARN @schematics/angular@0.1.17 requires a peer of @angular-
devkit/schematics@0.0.52 but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/schematics@0.0.11 requires a peer of @angular-
devkit/core@0.0.22 but none is installed. You must install peer dependencies 
yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/core@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/common@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of @angular/platform-
browser@^4.0.0 but none is installed. You must install peer dependencies 
yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/animations@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN bootstrap@4.0.0-beta.2 requires a peer of jquery@1.9.1 - 3 but none 
is installed. You must install peer dependencies yourself.
npm WARN bootstrap@4.0.0-beta.2 requires a peer of popper.js@^1.12.3 but 
none is installed. You must install peer dependencies yourself.
npm WARN ng2-toasty@4.0.3 requires a peer of @angular/core@^2.4.7 || ^4.0.0 
but none is installed. You must install peer dependencies yourself.
npm WARN ngx-carousel@1.3.5 requires a peer of @angular/core@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ngx-carousel@1.3.5 requires a peer of @angular/common@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN tsickle@0.25.5 requires a peer of typescript@>=2.4.2 <2.6 but none 
is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 
(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 
fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: 
{"os":"win32","arch":"x64"})

Я знаю, що, мабуть, роблю щось не так, але я новачок у Angular.

Відповіді:


81

Попередження про залежність від однолітків, частіше за все, можна ігнорувати. Єдиний раз, коли ви захочете вжити заходів, це те, якщо залежність однолітків повністю відсутня, або якщо версія однозалежної залежності перевищує встановлену вами версію.

Візьмемо це попередження як приклад:

npm ПОПЕРЕДЖЕННЯ @ angular / animations @ 5.2.1 вимагає однорангового рівня @ angular / core @ 5.2.1, але жодного не встановлено. Ви повинні встановити залежності однолітків самостійно.

З Angular ви хотіли б, щоб версії, які ви використовуєте, були узгоджені в усіх пакетах. Якщо є якісь несумісні версії, змініть версії у файлі package.json і запустітьnpm install щоб усі вони синхронізувались. Я, як правило, зберігаю свої версії для Angular в найновішій версії, але вам потрібно буде переконатися, що ваші версії відповідають будь-якій версії Angular, яка вам потрібна (яка може бути не останньою).

У такій ситуації:

npm ПОПЕРЕДЖЕННЯ ngx-carousel@1.3.5 вимагає однорангового рівня @ angular / core @ ^ 2.4.0 || ^ 4.0.0, але жоден не встановлений. Ви повинні встановити залежності однолітків самостійно.

Якщо ви працюєте з версією Angular, яка перевищує 4.0.0, то у вас, ймовірно, не буде проблем. Тоді нічого не робити з цим. Якщо ви використовуєте Angular версію під 2.4.0, вам потрібно оновити вашу версію. Оновіть package.json і запустіть npm installабо запустіть npm installпотрібну версію. Подобається це:

npm install @angular/core@5.2.3 --save

Ви можете не помітити, --saveякщо у вас запущена npm 5.0.0 або новіша версія, ця версія автоматично зберігає пакет у розділі залежностей пакета.json .

У цій ситуації:

npm ПОПЕРЕДЖЕННЯ необов'язково ПРОПУСКУВАННЯ НЕОБОВ'ЯЗКОВО ЗАЛЕЖНОСТІ: fsevents@1.1.3 (node_modules \ fsevents): npm ПОПЕРЕДЖЕННЯ notsup СКУПУВАННЯ НЕОБХІДНОЇ ЗАЛЕЖНОСТІ: Непідтримувана платформа для fsevents@1.1.3: розшукується {"os": "darwin", "arch": "any "} (поточний: {" os ":" win32 "," arch ":" x64 "})

У вас працює Windows, а для fsevent потрібна OSX. Це попередження можна проігнорувати.

Сподіваюся, це допоможе, і отримуйте задоволення від навчання Angular!


Дякую! Чи слід мені оновлювати версії в "залежностях" та "devDependencies" у моєму пакеті.json, чи слід створити "peerDependencies" та додати до них ці версії?
Томмі

Мій коментар про те, що не треба турбуватися, devDependenciesє неправильним. Ви також захочете оновити номери версій у цьому розділі. Пакети Angular у цьому розділі повинні мати ту саму версію, що й пакети в цьому dependenciesрозділі. Змінити версії, можливо, доведеться щось зробити. Вибачте за будь-яку плутанину!
Р. Річардс

здається завданням для комп’ютерів, вся інформація знаходиться в package.json, і моя ОС очевидна, це не цікаво вчитися. Одного разу люди кажуть, що "наші предки дуже постраждали, щоб зрозуміти це"
mkb

@ R.Richards пише: "Якщо ви працюєте з версією Angular, яка перевищує 4.0.0, то у вас, ймовірно, не буде проблем". Чи може аналізатор виявити присутність Angular вище 4.0.0? Якщо так, то навіщо показувати це попередження?
chrisinmtown

Вибачте за тупість, але я не розумію, чому ви отримуєте попередження типу `@ angular / core @ ^ 2.4.0 || ^ 4.0.0, але жоден не встановлений`, якщо ви працюєте з версією Angular, яка перевищує 4.0.0 ... Це просто тому, що версія вимкнена?
Янн

3

Ви можете ігнорувати попередження про залежність однолітків, використовуючи прапор --force з Angular cli під час оновлення залежностей.

ng update @angular/cli @angular/core --force

Повний перелік варіантів див. У документації: https://angular.io/cli/update


4
Я вважаю, що ця відповідь була б більш корисною, якщо б вона включала коротке пояснення того, що це робить, і чому вона допомогла вам у вирішенні питання, висунутого ОП
JTech

@JTech Я оновив свою відповідь, дякую за відгук.
Войтек Дмишевич

за допомогою командного рядка node js всередині папки clientapp він працює, велике спасибі
hosam hemaily

0

Я виявив, що запуск npm installкоманди в тому ж каталозі, де знаходиться ваш проект Angular , усуває ці попередження. Не знаю причини.

Зокрема, я намагався використовувати ng2-completer

$ npm install ng2-completer --save
npm WARN saveError ENOENT: no such file or directory, open 'C:\Work\foo\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Work\foo\package.json'
npm WARN ng2-completer@3.0.3 requires a peer of @angular/common@>= 6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ng2-completer@3.0.3 requires a peer of @angular/core@>= 6.0.0 but noneis installed. You must install peer dependencies yourself.
npm WARN ng2-completer@3.0.3 requires a peer of @angular/forms@>= 6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN foo No description
npm WARN foo No repository field.
npm WARN foo No README data
npm WARN foo No license field.

Я не зміг скомпілювати. Коли я спробував ще раз, цього разу в моєму каталозі проекту Angular, який знаходився у foo / foo_app, він працював нормально.

cd foo/foo_app
$ npm install ng2-completer --save

0

Бібліотеки пакетів NPM мають розділ у файлі package.json з назвою peerDependencies. Наприклад; бібліотека, побудована в Angular 8, зазвичай перелічує Angular 8 як залежність. Це справжня залежність для тих, хто працює з версією менше 8. Але для тих, хто працює з версіями 8, 9 або 10, сумнівно, чи слід переслідувати будь-які проблеми.

Я благополучно ігнорував ці повідомлення в Кутових оновленнях, але знову ж таки у нас є тести Unit і Cypress!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.