कोणीय - "कोई निर्यातित सदस्य 'ऑब्जर्वेबल' नहीं है"


156

कोड

त्रुटि जानकारी

टाइपस्क्रिप्ट कोड:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';

@Injectable({
  providedIn: 'root'
})
export class HeroService {

  constructor() { }

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

}

त्रुटि जानकारी:

त्रुटि TS2307: मॉड्यूल 'rxjs- कॉमर्स / ऑब्जर्वेबल' नहीं मिल सकता है। node_modules / rxjs / observable / Of.d.ts (1,15): त्रुटि TS2307: मॉड्यूल 'rxjs- कॉमेटर्स / ऑब्जर्वेबल /' नहीं ढूँढ सकता। src / app / hero.service.ts (2,10): त्रुटि TS2305: मॉड्यूल '' F: / कोणीय-टूर-ऑफ-हीरो / नोड_मॉड्यूल्स / rxjs / ऑब्जर्वेबल '' का कोई निर्यात सदस्य 'ऑब्जर्वेबल' नहीं है। src / app / hero.service.ts (15,12): त्रुटि TS2304: 'का नाम नहीं ढूँढ सकता।

package.json कोणीय संस्करण के साथ फ़ाइल:

संस्करण


3
आपके द्वारा उपयोग की जा रही रूपरेखा को एंगुलर नाम दिया गया है। AngularJS एक अलग रूपरेखा है।
जेबी निज़ेट

9
ऐसा लगता है कि आप RxJS 6 का उपयोग कर रहे हैं। उस संस्करण का उपयोग करते समय आयात को बदलना होगा (रिलीज़ नोट्स देखें)। यदि आप कोणीय 6 का उपयोग नहीं कर रहे हैं, तो आपको आरएक्सजेएस 5 के साथ रहना चाहिए।
जेबी निज़ेट

thx.I'm का उपयोग Angular6.0 ~
थॉमस ली

5
यहाँ प्रासंगिक दस्तावेज है तो: next.angular.io/guide/rx-library । ध्यान दें कि आयात वे नहीं हैं जिनका आप उपयोग कर रहे हैं।
जेबी निज़ेट

जवाबों:


205

यह इस दस्तावेज़ को अधिक जानकारी के लिए कोणीय 6 में सहायक हो सकता है

  1. rxjs: निर्माण विधियाँ, प्रकार, शेड्यूलर और उपयोगिताएँ
आयात {अवलोकन, विषय, asapScheduler, पाइप, की, से, अंतराल, मर्ज, fromEvent} से 'rxjs';
  1. rxjs / ऑपरेटर्स : सभी पाइप करने योग्य ऑपरेटर:
'rxjs / ऑपरेटर्स' से {map, फ़िल्टर, स्कैन} आयात करें;
  1. rxjs / webSocket: वेब सॉकेट विषय कार्यान्वयन
'rxjs / webSocket' से {webSocket} आयात करें;
  1. rxjs / ajax : Rx ajax कार्यान्वयन
'rjjs / ajax' से आयात {ajax};
  1. rxjs / परीक्षण : परीक्षण उपयोगिताओं
'rxjs / परीक्षण' से आयात {TestScheduler};

4
आप 'यह कैसे काम कर सकते हैं?' पहले हाथ से? खोज एसओ काम करता है, लेकिन अगर पुस्तकालय कम अच्छी तरह से इस्तेमाल किया गया था।
cjb110

12
npm स्थापित rxjs-compat --save
EvAlex

115

जाहिरा तौर पर (जैसा कि आप त्रुटि लॉग में इंगित करते हैं), कोणीय 6.0.0 rxjs -ोहॉमिटर्स को अद्यतन करने के बाद गायब है।

npm install rxjs-compat --saveस्थापित करने के लिए चलाएँ । इसे ठीक करना चाहिए।


3
मैं भी एक ही मुद्दे का सामना कर रहा हूँ, लेकिन क्या होगा अगर मैं पिछड़े संगतता पैकेज का उपयोग नहीं करना चाहता?
प्रसन्ना सासने

2
क्या होगा अगर हम rxjs- कॉमेटर्स का उपयोग नहीं करना चाहते हैं?
एनरिको

2
यह सही उत्तर होना चाहिए। यह आगे बढ़ने का सही उत्तर नहीं है ... लेकिन यह निश्चित रूप से "अभी का" उत्तर है।
विलियम टेरल

96

रख दो:

import { Observable} from 'rxjs';

बस असे ही। कम या ज्यादा नहीं।


6
'Rxjs / Observable' के बजाय 'rxjs' का उपयोग करने से मेरी समस्या हल हो गई। मुझे लगता है, प्रश्न के मालिक को आपके उत्तर को स्वीकार करना चाहिए।
लेवेंट डिविलीग्लू

1
यह निश्चित रूप से काम करेगा। लेकिन क्या यह ट्री शेकिंग का भी समर्थन करता है?
सैंडी

56

मैंने मूल कोड को बदल दिया import { Observable, of } from 'rxjs', और समस्या हल हो गई।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें


30

आप RxJS 6 का उपयोग कर रहे हैं। बस प्रतिस्थापित करें

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

द्वारा

import { Observable, of } from 'rxjs';


10

मेरी क्या मदद की है:

  1. सभी पुराने आयात पथों से छुटकारा पाएं और उन्हें इस तरह से नए लोगों के साथ बदलें:

    import { Observable , BehaviorSubject } from 'rxjs';)

  2. node_modulesफ़ोल्डर हटाएँ

  3. npm cache verify
  4. npm install

6

मेरा मुद्दा भी ऐसा ही था। 6.x से नवीनतम 5.x रिलीज के लिए बैक-रेक्सिंग आरएक्सजेएस ने इसे कोणीय 5.2.x के लिए तय किया।

पैकेज खोलें।

बदलें "rxjs": "^6.0.0",करने के लिए"rxjs": "^5.5.10",

Daud npm update


मुझे लगता है कि यह सबसे अच्छी बात है क्योंकि rxjs 6 का समर्थन केवल कोणीय 6 से किया जाएगा।
डेविड डी।

4

बस निकालने /Observableसे'rxjs/Observable';

यदि आप तब Cannot find module 'rxjs-compat/Observable'थ्रू टर्मिनल के लिए नीचे की ओर लाइन डालते हैं और एंटर दबाते हैं।

npm install --save rxjs-compat

2

मेरा संकल्प निम्नलिखित आयात जोड़ रहा था: import { of } from 'rxjs/observable/of';

तो परिवर्तन के बाद Hero.service.ts का समग्र कोड है:

import { Injectable } from '@angular/core';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
import { of } from 'rxjs/observable/of';
import {Observable} from 'rxjs/Observable';

@Injectable()
export class HeroService {

  constructor() { }

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

खैर वह त्रुटि थी जिसके साथ वह शुरू हुआ था, निर्यात नहीं है।
ज़्लातको

2

angular-splitघटक कोणीय 6 में समर्थित नहीं है, तो यह कोणीय 6 के साथ संगत बनाने अपने आवेदन में निर्भरता निम्नलिखित स्थापित करने के लिए

अद्यतन होने तक इसे प्राप्त करने के लिए:

"dependencies": {
"angular-split": "1.0.0-rc.3",
"rxjs": "^6.2.2",
    "rxjs-compat": "^6.2.2",
}

0

मेरे मामले में यह त्रुटि हो रही थी क्योंकि मेरे कंप्यूटर में एनजी क्लि का पुराना संस्करण था।

समस्या को चलाने के बाद हल किया गया था:

ng update

ng update @angular/cli


0

अद्यतन कोणीय-इन-मेमोरी-वेब-एपीआई संस्करण। ट्यूटोरियल कोणीय-टूर-ऑफ-हीरो के दौरान स्थापित डिफ़ॉल्ट कोणीय-इन-मेमोरी-वेब-एपीआई संस्करण 0.4 था। इसने मेरे मामले में एक आकर्षण की तरह काम किया। (RxJS 6 के साथ कोणीय 7 का उपयोग करना)

npm i angular-in-memory-web-api@0.8.0

-3

उपयोग return Observable.of(HEROES);


1
हालांकि यह उत्तर शायद सही और उपयोगी है, यह पसंद किया जाता है यदि आप इसे समझाने के साथ कुछ स्पष्टीकरण भी शामिल करते हैं कि यह समस्या को हल करने में कैसे मदद करता है। यह भविष्य में विशेष रूप से उपयोगी हो जाता है, अगर कोई परिवर्तन (संभवतः असंबंधित) होता है जो इसे काम करना बंद कर देता है और उपयोगकर्ताओं को यह समझने की आवश्यकता है कि एक बार कैसे काम किया।
एर्टि सीडोहेल

यदि आप प्रश्न को ध्यान से पढ़ते हैं, तो आपको Angular 6 और rxjs 6 का उल्लेख दिखाई देगा , न कि 5. यह समस्या rxjs v6 + के लिए विशिष्ट है, जबकि आपके द्वारा पोस्ट किया गया समाधान rxjs (और Angular) v5 से संबंधित है।
ज़्लातको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.