簡體   English   中英

Angular 6:未找到關於 RxJs 的模塊錯誤

[英]Angular 6: Module not found error regarding RxJs

我在用

  • 角 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(); 
    }
} 

我的app.module.ts代碼

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 視頻教程學習 Angular。 我遵循每一步。 但我得到了錯誤。

注釋行:import 'rxjs/add/operator/toPromise';

您正在使用已棄用的HttpModule ,您應該改用HttpClientModule

建議使用Observables over promises 通過轉換為承諾,您將失去取消請求的能力和鏈接 RxJS 操作符的能力。
在您可以使用HttpClient之前,您需要將 Angular 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"); 
        }
    } 

關於你得到的錯誤

從 rxjs 5.5.0-beta.5+ 開始, toPromise方法現在是Observable的永久方法。 您不再需要導入它Reference

由於您正在使用 RXJS 6+,我建議您進行Changes

LIVE DEMO WITH HTTPCLIENT

在 Angular 6 之后,你需要安裝 rxjs-compat 包

npm install --save rxjs-compat

更多信息看https://academind.com/learn/javascript/rxjs-6-what-c​​hanged/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM