I am using
when Compiling the Angular 6 app I got errors, below is just the first one
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'
My web.service.ts code
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();
}
}
My app.module.ts code
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 { }
I am learning Angular from Lynda.com video tutorial. I follow each and every step. but I got the error.
To solve the error "Cannot find module 'rxjs-compat/Observable'", make sure to install the package by opening your terminal in your project's root directory and running the following command: npm i rxjs and restart your IDE and development server. Copied!
To solve the error "Module not found: Error: Can't resolve 'rxjs'", make sure to install the rxjs package by opening your terminal in your project's root directory and running the command npm install rxjs and restart your development server.
Reactive Extensions for JavaScript, or RxJS, is a JavaScript library that uses observables for reactive programming. It can be used with other JavaScript libraries and frameworks, and it integrates well into Angular.
Since Angular 12.2. x supports rxjs 7.0.
After Angular 6 you will need to install the rxjs-compat package
npm install --save rxjs-compat
more information look https://academind.com/learn/javascript/rxjs-6-what-changed/
Comment line : import 'rxjs/add/operator/toPromise';
You are using HttpModule
which is deprecated you should use HttpClientModule
instead
it's recommended to use Observables over promises
. By converting to a promise you will lose the ability to cancel a request and the ability to chain RxJS operators.
Before you can use the HttpClient
, you need to import the Angular HttpClientModule
into root Module.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
],
//.......
Modified Code:
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");
}
}
Regarding the error you are getting
As of rxjs 5.5.0-beta.5+ the toPromise
method is now a permanent method of Observable
. You don't need to import it anymore Reference
Since You are working with RXJS 6+ I would Recommend you to go through the Changes
LIVE DEMO WITH HTTPCLIENT
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With