找不到“@angle/common/http”模块

我遵循 这个的基本教程关于 Http 的角度。

在“安装: 安装模块”部分可以看到,它们导入 HttpClientModule 如下所示:

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

当我在我的项目中尝试这样做时,我得到了以下错误: “无法找到模块‘@angle/common/http’”。

我尝试导入以下模块,如下所示:

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

然后是我的进口部分:

imports: [
HttpModule
],

现在的问题是,我无法将这个 HttpModule 注入到我的服务对象中,并且我得到以下错误: “ Can not find module HttpModule”。

这是我的服务类别:

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


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

我做错了什么?

更新 当我意识到不能按照教程导入模块时,我所要做的就是运行 npm update命令,更新所有的包。

177920 次浏览

重要 : HttpClientModule适用于角度4.3.0及以上。请查看 < strong >@Maximus’注释和 @ Pengyy’s @Pengyy’s 回答以获得更多信息。


原答案:

您需要在组件/服务中注入 HttpClient,而不是模块

// 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) {}

就像 文件里写的那样


但是,既然您导入了 HttpModule

你需要注入 constructor(private httpClient: Http)作为 @ Maximus 在评论和 这个答案中的 < strong >@Pengyy

要了解更多关于 HttpModuleHttpClientModule之间差异的信息,请查看 这个答案

重要更新:

@angular/httpHttpModuleHttp已经是 已经废弃了了,应该改用 @angular/common/httpHttpClientModuleHttpClient,参考 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳


对于角形版本的 前情提要 * *@4.3.0,您应该从 @angular/http注入 Http,而 HttpModule用于在 NgModule 的导入数组中导入。

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


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

在组件或服务上注入 http

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


constructor(private http: Http) {}

对于角形版本 后(包括)4.3.0,您可以使用 @angular/common/http中的 HttpClient代替 @angular/http中的 Http。不要忘记首先在 NgModule的导入数组中导入 HttpClientModule

请参考@echonax 的答案。

你应该从 @angular/http进口 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');
}

注意: 这是用于@angle/http 的,而不是用于询问@angle/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: [... ]
})

然后你建造服务,就像这样:

constructor(private http: Http) { }


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

我在角度5中使用 http,这是一个问题。 使用 Httpclient 解决了这个问题。

小心自动导入。我的 HTTP _ INTERCEPTORS 是这样自动导入的:

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

而不是

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

导致了这个错误

对于任何使用爱奥尼亚3和角度5的人,我有同样的错误弹出,我没有在这里找到任何解决方案。但我找到了一些适合我的方法。

复制步骤:

  • Npm install-g 科尔多瓦离子
  • 离子启动我的应用程序标签
  • Cd 我的应用程序
  • Cd node _ module/angle/common (不存在 http 模块)。

Ionic: (在终端/cmd 提示符处运行 ionic 信息) ,检查版本并确保它们是最新的。您还可以检查项目中 package.json 文件夹中的棱角版本和包。

我检查了我的依赖项和软件包并安装了 cordova。重新启动 atom 并消除了错误。希望这有所帮助!

请参考以下内容: 不赞成@angle/http,而赞成@angle/common/http。

这个问题解决了吗。

我得到了这个错误: Node _ module/ngx-restangle/lib/ngx-restangle-http. d.ts (3,27)中的错误: 错误 TS2307: 无法找到模块“@angle/common/http/src/response”。

在更新我的角度到版本 = 8

这里的答案又一次过时了。为了解决这个问题,我必须这样做:

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


...
@NgModule({
imports: [
HttpClientModule
],
declarations: [],
providers: [
HttpClient
],

所有这些都在 app.module.ts里,这是11的角度。