Загадочная несовместимая одноранговая зависимость при обновлении Angular от 6 до 8 - PullRequest
1 голос
/ 07 июля 2019

Следуя руководству по обновлению Angular (https://update.angular.io/) Я начал с

$ ng update @angular/cli @angular/core

Но это привело к этому списку некоторых несовместимостей:

Package "codelyzer" has an incompatible peer dependency to "@angular/core" (requires ">=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0" (extended), would install "8.1.0").
Package "@ngrx/router-store" has an incompatible peer dependency to "@angular/router" (requires "^6.0.0" (extended), would install "8.1.0").
Package "ngrx-tslint-oftype" has an incompatible peer dependency to "typescript" (requires "^2.8.3", would install "3.4.5").
Package "@angular/http" has an incompatible peer dependency to "@angular/platform-browser" (requires "6.1.3" (extended), would install "8.1.0").
Package "@angular/material" has an incompatible peer dependency to "@angular/core" (requires ">=6.0.0-beta.0 <7.0.0" (extended), would install "8.1.0").
Package "codelyzer" has an incompatible peer dependency to "@angular/compiler" (requires ">=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0" (extended), would install "8.1.0").
Package "@angular/material" has an incompatible peer dependency to "@angular/core" (requires ">=6.0.0-beta.0 <7.0.0" (extended), would install "8.1.0").

Я обновил codelyzerчтобы убрать это из списка. Затем я решил, что могу изменить команду, чтобы удалить еще несколько:

$ ng update @angular/cli @angular/core @ngrx/store @angular/material @angular/http

Это оставило меня с таким удивительным результатом, озадачивающим, потому что одна из двух несовместимостей @angular/httpвсе еще присутствует!

Package "ngrx-tslint-oftype" has an incompatible peer dependency to "typescript" (requires "^2.8.3", would install "3.4.5").
Package "@angular/http" has an incompatible peer dependency to "@angular/core" (requires "7.2.15", would install "8.1.0")

Итак, у меня есть две проблемы:

  1. Для ngrx-tslint-oftype я рассмотрел способы переопределения зависимости пакета от версии машинописного текста, но чтоЯ обнаружил, что до сих пор - в основном npm shrinkwrap - казалось, есть проблемы.
  2. Почему @ angular / http все еще жалоба и как я могу это исправить?

Обратите внимание, чтоЯ также попробовал ng update --all, но это дало мне некоторые несовместимости с другими пакетами, не относящимися к обновлению Angular.

Я не решаюсь добавить --force; я бы предпочел иметь возможность исправлять вещи так, чтобыне является необходимостью. Предложения?

1 Ответ

1 голос
/ 07 июля 2019

@angular/http устарела Angular и больше не используется (см. здесь ).Вместо этого вы можете использовать @angular/common/http (см. документы ).Вам нужно будет использовать класс HttpClient из HttpClientModule

app.module.ts

import { HttpClientModule } from '@angular/common/http';

@NgModule({
 imports: [
   BrowserModule,
   HttpClientModule
 ],
...

Везде, где вы хотите его использовать

import { HttpClient } from '@angular/common/http';

class MyService() {
    constructor(http: HttpClient) { }
...

Что касается вопроса с ngrx-tslint-oftype.Попробуйте обновить версию для машинописного текста до 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...