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
在编译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代码

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都会改变这一点。