Observable.of एक फ़ंक्शन नहीं है


192

मैं Observable.ofअपनी परियोजना में फ़ंक्शन आयात करने के साथ समस्या कर रहा हूं। मेरी इंटेलीज सब कुछ देखती है। मेरे कोड में:

import {Observable} from 'rxjs/Observable';

और मेरे कोड में मैं इसे इस तरह उपयोग करता हूं:

return Observable.of(res);

कोई विचार?


5
आप सही आयात और उपयोग के बारे rxjs6 उपयोग कर रहे हैं नवीनतम डॉक्स चेकआउट import { of } from 'rxjs'; return of(res); github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths और github.com/ReactiveX/rxjs/blob/master/...
fidev

जवाबों:


232

वास्तव में मैं आयात गड़बड़ है। RxJS के नवीनतम संस्करण में हम इसे इस तरह आयात कर सकते हैं:

import 'rxjs/add/observable/of';

21
मेरे 192 वें दोहरे-लेने के बाद, मैंने देखा कि मेरे कोड में मैं इसके बजाय operator/- rxjs/add/operator/of- से आयात कर रहा था observable/। डी 'ओह।
EricRobertBrewer

मैंने पाया कि मुझे कोणीय परियोजनाओं में से एक में इस कथन का उपयोग करने की आवश्यकता नहीं है। लेकिन दूसरे एक में, मुझे इसे आयात करना होगा। मैं अंतर नहीं समझता। क्या आप इसके कारणों को जानते हैं?
नियामिंगजियन

1
कोणीय संस्करण, शायद ?! मुझे यह 4.3.2 के लिए नहीं करना था, लेकिन मैंने 5.0.0 के लिए किया।
ड्रैगहॉन

@ डे्रगन: बिल्कुल मेरे साथ भी ऐसा ही है। मुझे यह 4.4 के लिए नहीं करना था, मैं अब 5.2 के लिए करता हूं। इससे भी अधिक अजीब, मुझे केवल इसे एक फ़ाइल और अन्य सभी .ts-files में शामिल करना है, बस इसे उठाएं और जाने के लिए अच्छा है।
जेपी दस बर्ज

2
क्या होगा अगर मुझे मॉड्यूल "rxjs / add / observable / of" नहीं मिल सकता है?
एनरिको

167

अगर किसी को कोणीय 6 / rxjs 6 का उपयोग करते समय यह समस्या हो रही है, तो यहां उत्तर देखें: RxJs 6 और कोणीय 6 में Observable.of का उपयोग नहीं किया जा सकता है

संक्षेप में, आपको इसे इस तरह से आयात करने की आवश्यकता है:

import { of } from 'rxjs';

और फिर कॉल करने के बजाय

Observable.of(res);

महज प्रयोग करें

of(res);

2
धन्यवाद! आरएक्स में आयात के बारे में पता लगाना हमेशा से ही एप्टी अस्थिरता के कारण मेरे लिए हताशा का इतना बड़ा स्रोत है।
डोमिनिकडैटी

43

हालाँकि यह बिल्कुल अजीब लगता है, मेरे साथ आयात के रास्ते में 'O' को कैपिटल करने की बात हुई import {Observable} from 'rxjs/Observableobservable_1.Observable.of is not a functionयदि मैं ऑब्जर्वेबल से आयात करता हूं, तो त्रुटि संदेश मौजूद रहता है rxjs/observable। अजीब लेकिन मुझे उम्मीद है कि यह दूसरों की मदद करता है।


40

यदि आप Angular 6/7 का उपयोग कर रहे हैं

import { of } from 'rxjs';

और फिर कॉल करने के बजाय

Observable.of(res);

महज प्रयोग करें

of(res);

इसकी वजह है 5 से 6 के RxJS संस्करण में बदलाव जिसने कई ब्रेकिंग बदलाव पेश किए। आप यहां देख सकते हैं कि अपने कोणीय प्रोजेक्ट को कैसे माइग्रेट करें: rxjs.dev/guide/v6/migration
Edric

29

मेरी मूर्खतापूर्ण गलती यह थी कि मैं /addअवलोकन योग्य होने पर जोड़ना भूल गया ।

था:

import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';

जो rxjs/observable/ofवास्तव में ओके बैस्यू फाइल दिखता है, वास्तव में मौजूद है।

होना चाहिए:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

जैसा कि @Shaun_grady ने बताया, किसी तरह यह काम नहीं करता है। मैं अपने प्रस्ताव के साथ जाना था
Sonne

20

पैचिंग मेरे लिए काम नहीं कर रही थी, जो भी कारण हो, इसलिए मुझे इस पद्धति का सहारा लेना पड़ा:

import { of } from 'rxjs/observable/of'

// ...

return of(res)

यह कोई काम नहीं है, यह कोणीय> = 6.0.0 के लिए वाक्यविन्यास है। 'rxjs' का {}} आयात मेरे लिए ठीक था। देखें stackoverflow.com/questions/38067580/...
mark_h

18

बस जोड़ने के लिए,

यदि आप उनमें से कई का उपयोग कर रहे हैं तो आप सभी का उपयोग करके आयात कर सकते हैं

import 'rxjs/Rx'; 

जैसा @Thierry Templier द्वारा बताया गया है। लेकिन मुझे लगता है कि यदि आप सीमित ऑपरेटर का उपयोग कर रहे हैं तो आपको व्यक्तिगत ऑपरेटर को आयात करना चाहिए

import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';

जैसा कि @uksz द्वारा बताया गया है।

क्योंकि 'rxjs / Rx' सभी Rx घटकों को आयात करेगा जो निश्चित रूप से प्रदर्शन लागत।

तुलना


1
मैंने पाया कि मुझे कोणीय परियोजनाओं में से एक में इस कथन का उपयोग करने की आवश्यकता नहीं है। लेकिन दूसरे एक में, मुझे इसे आयात करना होगा। मैं अंतर नहीं समझता। क्या आप इसके कारणों को जानते हैं?
निओमिंगजियन

16

आप सभी ऑपरेटरों को इस तरह से आयात कर सकते हैं:

import {Observable} from 'rxjs/Rx';

7
मैं इस तरह से आयात करने की सिफारिश नहीं करूंगा, क्योंकि यह एक बहुत बड़ा पुस्तकालय है और "का" इसका एक बहुत छोटा हिस्सा है।
मैथगार्ड

2
@methgaard import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';काम नहीं करता है। केवल import {Observable} from 'rxjs/Rx';काम करता है। संस्करण 5.4.2 है
niaomingjian

@methgaard मुझे क्षमा करें। मैंने भूल की। तथ्य मुझे मिल गया है Observable_1.Observable.of(...).delay(...).timeout is not a function। मैंने उपयोग नहीं कियाimport 'rxjs/add/operator/timeout'
niaomingjian

यह बंडल का आकार भी बढ़ाता है
अमीरहोसिन मेहरवारजी

5

मैं Angular 5.2 और RxJS 5.5.6 का उपयोग कर रहा हूं

यह कोड काम नहीं किया:

     import { Observable,of } from 'rxjs/Observable';

     getHeroes(): Observable<Hero[]> {
        return of(Hero[]) HEROES;

      }

नीचे दिए गए कोड ने काम किया:

    import { Observable } from 'rxjs/Observable';
    import { Subscriber } from 'rxjs/Subscriber';

     getHeroes(): Observable<Hero[]> 
     {
          return Observable.create((observer: Subscriber<any>) => {
              observer.next(HEROES);
              observer.complete();
          });

      }

कॉलिंग विधि:

this.heroService.getHeroes()
      .subscribe(heroes => this.heroes = heroes);

मुझे लगता है कि वे RxJS 5.5.2 में (/) कार्यक्षमता को स्थानांतरित / बदल सकते हैं


4

यह ठीक से काम करना चाहिए बस कोशिश करें।

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

4
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';

.... 
return of(res)

यह एक कोड-ओनली उत्तर है। क्या आप यह बताना चाहेंगे कि आप क्या सुझाव देना चाह रहे हैं?
पीटर विप्रमैन

1
नमस्ते, हमें केवल उस ऑपरेटर को आयात करना चाहिए जिसकी हमें आवश्यकता है, प्रदर्शन के मुद्दे के कारण पूरे "अवलोकन योग्य" नहीं। नए संस्करण में (^ 5.5.10) "ऑपरेटर" के आयात का सही तरीका है: 'rxjs / observable /' का ... से {} का आयात ... यह मेरे मामले के लिए काम करता है। मैं अपने संकल्प को संपादित करूंगा। धन्यवाद पीटर।
लेटांथांग

4

कोणीय 5 / Rxjs 5 से कोणीय 6 / Rxjs 6 में अपग्रेड किया गया?

आपको अपने आयात और अपनी तात्कालिकता को बदलना होगा। डेमियन की ब्लॉग पोस्ट देखें

Tl, डॉ:

import { Observable, fromEvent, of } from 'rxjs';

const yourResult = Observable
    .create(of(yourObservable))
    .startWith(null)
    .map(x => x.someStringProperty.toLowerCase());

//subscribe to keyup event on input element
Observable
    .create(fromEvent(yourInputElement, 'keyup'))
    .debounceTime(5000)
    .distinctUntilChanged()
    .subscribe((event) => {
        yourEventHandler(event);
    });

1
6.0 का उपयोग करते हुए, Observable.create ((वैल)) की सदस्यता लेने का प्रयास करने के परिणामस्वरूप "this._subscribe एक फ़ंक्शन नहीं है"। इसके बजाय, मैंने सफलतापूर्वक "(वैल)" के नाम से केवल एक अवलोकन किया।
जिम नॉर्मन

3

आरएक्सजेएस 6

RxJSलायब्रेरी के संस्करण 6 में अपग्रेड करते समय और rxjs-compatनिम्न कोड पैकेज का उपयोग न करें

import 'rxjs/add/observable/of';   
  // ...
  return Observable.of(res);

में बदलना होगा

import { of } from 'rxjs';
  // ...
  return of(res);

3

मेरे लिए (कोणीय 5 और RxJS 5) स्वतः पूर्ण आयात का सुझाव दिया:

import { Observable } from '../../../../../node_modules/rxjs/Observable';

जबकि करने के लिए सभी स्थैतिक ऑपरेटरों के साथ (होना चाहिए from, of, ect काम कर ठीक:

import { Observable } from 'rxjs/Observable';

2

मुझे आज यह समस्या थी। मैं निर्भरता को लोड करने के लिए systemjs का उपयोग कर रहा हूं।

मैं इस तरह Rxjs लोड कर रहा था:

...
    paths: {
        "rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
    },
...

उपयोग पथ के बजाय इसका उपयोग करें:

var map = {
...
'rxjs':                       'node_modules/rxjs',
...
}

var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}

जिस तरह से सिस्टमज ने पुस्तकालय को मेरी समस्या तय की है, उसमें यह थोड़ा बदलाव।



2

कोणीय 5+ के लिए:

import { Observable } from 'rxjs/Observable';कार्य करना चाहिए। पर्यवेक्षक पैकेज को आयात से भी मेल खाना चाहिएimport { Observer } from 'rxjs/Observer';यदि आप पर्यवेक्षकों का उपयोग कर रहे हैं तो

import {<something>} from 'rxjs'; एक बड़ा आयात करता है इसलिए इससे बचना बेहतर है।


1
import 'rxjs/add/observable/of';

rxjs -ोहैक्टर की आवश्यकता दर्शाता है

require("rxjs-compat/add/observable/of");

मेरे पास यह स्थापित नहीं था। द्वारा स्थापित किया गया

npm install rxjs-compat --save-dev

और पुनर्जन्म ने मेरा मुद्दा तय कर दिया।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.