2016-10-30 2 views
7

gab es eine Menge Fragen über "Karte ist keine Funktion", aber fast jeder nur nicht importiert die RXJS-Bibliothek.Karte ist keine Funktion (Rxjs) obwohl Import

In meinem Fall mache ich den Import, aber der Fehler ist immer noch da.

Ich arbeite mit Ionic 2 und das ist, wie meine package.json Abhängigkeiten wie folgt aussehen:

"dependencies": { 
"@angular/common": "2.0.0", 
"@angular/compiler": "2.0.0", 
"@angular/compiler-cli": "0.6.2", 
"@angular/core": "2.0.0", 
"@angular/forms": "2.0.0", 
"@angular/http": "2.0.0", 
"@angular/platform-browser": "2.0.0", 
"@angular/platform-browser-dynamic": "2.0.0", 
"@angular/platform-server": "2.0.0", 
"@ionic/storage": "1.0.3", 
"ionic-angular": "2.0.0-rc.1", 
"ionic-native": "2.2.3", 
"ionicons": "3.0.0", 
"rxjs": "5.0.0-beta.12" 
} 

Also das ist, wie ich meinen Dienst zu erstellen:

import { Injectable } from '@angular/core'; 
import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
import { Observable } from 'rxjs'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class LoginService { 
    constructor(private http: Http) { 

    } 

    private dataUrl = '/node'; 

    getData() : any { 
     this.http.get(this.dataUrl) 
      .map(response => response.json()) 
      .subscribe(result => console.log(result)); 
    } 
} 

Ich versuchte auch, die neu zu installieren rxjs Modul, aber immer noch kein Erfolg. Vielleicht ist es nicht kompatibel mit ionischen 2 oder der aktuellen eckigen Version?

Was denkst du Jungs?

Cheers,

Andrej

+0

Können Sie die gesamte Fehlermeldung anzeigen? – martin

+0

versuchen Sie mit diesem auch 'Import 'Rxjs/Rx'' – micronyks

Antwort

2

erstellen Datei rxjs-operators.ts

// Statics 
import 'rxjs/add/observable/throw'; 
// Operators 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/debounceTime'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 
import 'rxjs/add/operator/toPromise'; 

und es nennen, wenn, wenn nötig.

import './rxjs-operators'; 
1

versuchen

import {Observable} from 'rxjs/Observable'; 

getData() : Observable<any> { 
     this.http.get(this.dataUrl) 
      .map(response => response.json()) 
      .subscribe(result => console.log(result)); 
    } 
7

ich hatte das gleiche Problem.

Ich benutze jspm mit system.js. Für mich, wenn ich mein System aktualisiert mit jspm update eckig2-http erforderlich [email protected], aber [email protected] erforderlich [email protected] was ist dann, was "rxjs" zugeordnet. Ich nehme an, weil es die neueste Version war? Ich habe das alles entdeckt, indem ich die Datei config.js, die von jspm erstellt wurde, untersuchte.

So offensichtlich, wenn ich die Anweisung ...

import 'rxjs/add/operator/map'; 

... es wurde Karte Hinzufügen 5.0.0-beta.12 bis rxjs Version, die nicht die Version ist, die http wurde mit. Ich musste die Linie ändern, um ...

import 'npm:[email protected]/add/operator/map'; 

... und dann hat es funktioniert.

+0

danke !.Ich habe gerade die Versionsnummer von rxjs in Ihrem Importcode geändert und es hat für mich funktioniert. –

0

versuchen

Import {injizierbare} von '@ Winkel/Kern'; importieren {Http, Antwort, Headers, URLSearchParams, RequestOptions} von '@ angular/http'; {Observable} aus 'rxjs/Observable' importieren; Import 'Rxjs/Rx';

-1

Importieren importieren 'rxjs/Rx'; hat einige Probleme mit der Version 5.5.2, da für jeden Import ich aus dem Import {Observable} von 'rxjs/Rx' wechseln, um {Observable} aus 'rxjs/Observable' zu importieren;

+1

Zwei Dinge: Dein Satz ist unvollständig. Und es wäre großartig, wenn Sie Ihren Anspruch entweder mit einer Quelle ausarbeiten oder sichern könnten. – MrPaulch

+0

@MrPaulch: Wenn wir Observable wie Import importieren {Observable} von 'rxjs/Rx' erstellt Probleme und wir müssen bewegen, um {Observable} von 'rxjs/Observable' zu importieren; –

Verwandte Themen