Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 6: Module not found error regarding RxJs

I am using

  • Angular CLI: 6.0.5
  • Node: 8.11.1
  • Angular: 6.0.3
  • rxjs: 6.2.0

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.

like image 315
aasim bairagdar Avatar asked May 27 '18 13:05

aasim bairagdar


People also ask

Can not find module RXJS?

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!

Could not resolve rxjs?

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.

Can we use RXJS in angular?

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.

What version of RXJS does angular 12 use?

Since Angular 12.2. x supports rxjs 7.0.


3 Answers

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/

like image 144
Alexandre Higino Avatar answered Nov 01 '22 18:11

Alexandre Higino


Comment line : import 'rxjs/add/operator/toPromise';

like image 25
Bhalchandra Avatar answered Nov 01 '22 18:11

Bhalchandra


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

like image 28
Vikas Avatar answered Nov 01 '22 16:11

Vikas