Подтвердить что ты не робот

Не удается найти модуль '@angular/common/http'

Я следую этому основному учебнику по Angular о Http.

Как видно из раздела "Установка: установка модуля", они импортируют HttpClientModule следующим образом:

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

Когда я попробую это в своем проекте, я получаю следующую ошибку: "Не могу найти модуль" @angular/common/http '".

Я попытался импортировать следующий модуль, как показано ниже:

import { HttpModule } from '@angular/http';

И затем мой раздел импорта:

imports: [
    HttpModule
],

Теперь проблема заключается в том, что я не могу внедрить этот HttpModule в свой объект службы, и я получаю следующую ошибку: "Не удается найти модуль HttpModule".

Вот мой класс обслуживания:

import { Injectable, OnInit } from '@angular/core';
//Custom Models
import { Feed } from '../Models/Feed';

@Injectable()
export class FeedsService {
    constructor(private httpClient: HttpModule) {}
}

Что я делаю неправильно?

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

4b9b3361

Ответ 1

Важно: HttpClientModule для Angular 4.3.0 и выше. Проверьте @Maximus и @Pengyy answer для получения дополнительной информации.


Оригинальный ответ:

Вам нужно ввести HttpClient в свой компонент/службу, а не в модуль. Если вы импортируете HttpClientModule в свой @NgModule

// app.module.ts:

import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';

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

@NgModule({
  imports: [
    BrowserModule,
    // Include it under 'imports' in your application module
    // after BrowserModule.
    HttpClientModule,
  ],
})
export class MyAppModule {}

Итак, измените

constructor(private httpClient: HttpModule) {}

к

constructor(private httpClient: HttpClient) {}

как написано в документации: https://angular.io/guide/http#making-a-request-for-json-data


Однако, поскольку вы импортировали HttpModule

вам нужно ввести constructor(private httpClient: Http) как @Maximus, указанный в комментариях, и @Pengyy в этом ответе.

И для получения дополнительной информации о различиях между HttpModule и HttpClientModule, проверьте этот ответ: fooobar.com/questions/56972/...

Ответ 2

Важное обновление:

HttpModule с Angular V5, HttpModule и Http из @angular/http устарели, HttpClientModule HttpClient использования HttpClientModule и HttpClient из @angular/common/http см. CHANGELOG.


Для версии Angular, предыдущей от **@4.3.0, вы должны ввести Http из @angular/http, а HttpModule предназначен для импорта в вашем массиве импорта NgModule.

import {HttpModule} from '@angular/http';

@NgModule({
  ...
  imports: [HttpModule]
})

Введите http в компонент или службу

import { Http } from '@angular/http';

constructor(private http: Http) {}

Для версии Angular после ( HttpClient ) 4.3.0 вы можете использовать HttpClient из @angular/common/http вместо Http из @angular/http. Не забудьте HttpClientModule импортировать HttpClientModule в свой NgModule импорта NgModule.

Ссылайтесь на @echonax ответ.

Ответ 3

note: Это для @ angular/http, а не для запроса @angular/common/http!

Просто импортируйте таким образом, РАБОТАЕТ отлично:

// Import HttpModule from @angular/http
import {HttpModule} from '@angular/http';


@NgModule({
  declarations: [
    MyApp,
    HelloIonicPage,
    ItemDetailsPage,
    ListPage
  ],
  imports: [
    BrowserModule,
    HttpModule,
    IonicModule.forRoot(MyApp),
  ],
  bootstrap: [...],
  entryComponents: [...],
  providers: [... ]
})

а затем вы выполните в service.ts вот так:

constructor(private http: Http) { }

getmyClass(): Promise<myClass[]> {
  return this.http.get(URL)
             .toPromise()
             .then(response => response.json().data as myClass[])
             .catch(this.handleError);
}

Ответ 4

Я использовал http в angular 5, что было проблемой. Использование Httpclient разрешило проблему.

Ответ 5

Остерегайтесь импорта авто. мой HTTP_INTERCEPTORS был автоматически импортирован следующим образом:

import { HTTP_INTERCEPTORS } from '@angular/common/http/src/interceptor';

вместо

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

что вызвало эту ошибку

Ответ 6

Вы должны импортировать http из @angular/http в свою службу:

import {Http} from '@angular/http';

constructor(private http: http) {} // <--Then Inject it here


// now you can use it in any function eg:
getUsers() {
    return this.http.get('whateverURL');
}

Ответ 7

Для тех, кто использует Ionic 3 и Angular 5, у меня была одна и та же ошибка, и я не нашел здесь никаких решений. Но я нашел несколько шагов, которые спомогли мне.

Действия по воспроизведению:

  • npm install -g Cordova Ionic
  • ионный запуск вкладок myApp
  • cd myApp
  • cd node_modules/angular/common (модуль http не существует).

ionic: (запустить ионную информацию из терминала/команды cmd), проверить версии и убедиться, что они обновлены. Вы также можете проверить угловые версии и пакеты в папке package.json вашего проекта.

Я проверил свои зависимости и пакеты и установил Cordova. Перезапустил атом и ошибка ушла. Надеюсь это поможет!

Ответ 8

Обратитесь к этому: http: deprecate @angular/http в пользу @angular/common/http.

Ответ 9

Эта проблема решена.

Я получаю эту ошибку: ОШИБКА в node_modules/ngx-restangular/lib/ngx-restangular-http.d.ts(3,27): ошибка TS2307: Не удается найти модуль '@angular/common/http/src/response'.

После обновления моего угла до версии = 8