Javascript 角度6:模块未找到RxJs相关错误
我正在使用Javascript 角度6:模块未找到RxJs相关错误,javascript,node.js,angular,Javascript,Node.js,Angular,我正在使用 角度CLI:6.0.5 节点:8.11.1 角度:6.0.3 rxjs:6.2.0 在编译Angular 6应用程序时,我遇到了一些错误,下面就是第一个错误 ERROR in ./src/app/web.service.ts Module not found: Error: Can't resolve 'rxjs/add/operator/toPromise' in 'C:\Node\ang\frontend\src\app' 我的web.service.ts代码 impor
- 角度CLI:6.0.5
- 节点:8.11.1
- 角度:6.0.3
- rxjs:6.2.0
ERROR in ./src/app/web.service.ts
Module not found: Error: Can't resolve 'rxjs/add/operator/toPromise' in
'C:\Node\ang\frontend\src\app'
我的web.service.ts代码
import { Http, Headers, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
export class WebService{
constructor(private http:Http){
}
getMessages(){
return this.http.get("http://localhost:2000/messages").toPromise();
}
}
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {MatButtonModule,
MatCardModule,
MatSnackBarModule,
MatToolbarModule,
MatInputModule} from '@angular/material';
import { AppComponent } from './app.component';
import { WebService } from './web.service';
import { MessagesComponent } from './messages.component';
import {HttpModule} from '@angular/http';
@NgModule({
declarations: [
AppComponent, MessagesComponent
],
imports: [
BrowserModule, HttpModule, NoopAnimationsModule, MatButtonModule, MatCardModule, MatSnackBarModule, MatToolbarModule, MatInputModule
],
providers: [WebService],
bootstrap: [AppComponent]
})
export class AppModule { }
我的应用程序模块.ts代码
import { Http, Headers, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
export class WebService{
constructor(private http:Http){
}
getMessages(){
return this.http.get("http://localhost:2000/messages").toPromise();
}
}
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {MatButtonModule,
MatCardModule,
MatSnackBarModule,
MatToolbarModule,
MatInputModule} from '@angular/material';
import { AppComponent } from './app.component';
import { WebService } from './web.service';
import { MessagesComponent } from './messages.component';
import {HttpModule} from '@angular/http';
@NgModule({
declarations: [
AppComponent, MessagesComponent
],
imports: [
BrowserModule, HttpModule, NoopAnimationsModule, MatButtonModule, MatCardModule, MatSnackBarModule, MatToolbarModule, MatInputModule
],
providers: [WebService],
bootstrap: [AppComponent]
})
export class AppModule { }
我正在学习Lynda.com视频教程。我遵循每一步。但是我得到了错误。您正在使用
HttpModule
,它已被弃用您应该改用建议使用。通过转换为承诺,您将失去取消请求和链接RxJS运营商的能力。
在使用
HttpClient
之前,需要将角度HttpClientModule
导入根模块
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
],
//.......
修改代码:
import { HttpClient} from '@angular/http';
import {Observable} from 'rxjs';
export class WebService{
constructor(private httpc:Http){}
getMessages():Observable<any>{
return this.httpc.get("http://localhost:2000/messages");
}
}
从'@angular/http'导入{HttpClient};
从“rxjs”导入{Observable};
导出类Web服务{
构造函数(私有httpc:Http){}
getMessages():可观察的
由于您使用的是RXJS 6+,因此我建议您通过
注释行:导入'rxjs/add/operator/toPromise';Angular 6之后,您需要安装rxjs compat软件包
npm install --save rxjs-compat
更多信息请查看标记我的答案如果有帮助,您没有标记答案的良好历史;)您应该为其他操作员安装rxjs compat库,这些操作员在进入rxjs6+时可能需要,但这是正确的答案…解决了我的问题。这只是因为toPromise是合法成员,不需要导入现在…答案中的描述可以更详细一些,尽管…在…之前不是合法的成员…然后不是一个…现在又是了?…但在所有这些之前,不是一个-在那之前是合法的?我感觉每次发布该repo都会改变这一点。