कोणीय 2 बीटा.17: संपत्ति 'नक्शा' प्रकार 'ऑब्जर्वेबल <प्रतिक्रिया>' पर मौजूद नहीं है


195

मैं सिर्फ Angular 2 Beta16 से Beta17 में अपग्रेड हुआ , जिसके बदले में rxjs 5.0.0-beta.6 की आवश्यकता है। (यहां चेंगलॉग : https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) बीटा 16 में सभी ऑब्जर्वेबल / मैप फंक्शनलिटी के बारे में अच्छी तरह से काम कर रहे थे। टाइप करने के बाद निम्नलिखित त्रुटियां दिखाई दीं और जब टाइपस्क्रिप्ट ट्रांसपाइल का प्रयास करता है:

  1. प्रॉपर्टी 'मैप' 'ऑब्जर्वेबल' टाइप पर मौजूद नहीं है (कहीं भी मैंने ऑब्जर्वेबल के साथ मैप का इस्तेमाल किया है)
  2. c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): त्रुटि TS2435: परिवेश मॉड्यूल अन्य मॉड्यूल या नेमस्पेस में नेस्ट नहीं किया जा सकता है।
  3. c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): त्रुटि TS2436: परिवेश मॉड्यूल घोषणा एक सापेक्ष मॉड्यूल नाम निर्दिष्ट नहीं कर सकती।

मैंने इस प्रश्न / उत्तर को देखा है लेकिन यह समस्या को हल नहीं करता है: Angular2 beta.12 और RxJ2 5 बीटा के साथ अवलोकन योग्य त्रुटियां

मेरा appBoot.ts इस तरह दिखता है (मैं पहले से ही rxjs / मैप को संदर्भित कर रहा हूँ):

///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
import {bootstrap} from "angular2/platform/browser";
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
[stuff]
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {enableProdMode} from 'angular2/core';
import { Title } from 'angular2/platform/browser';


//enableProdMode();
bootstrap(AppDesktopComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

किसी को भी किसी भी विचार है कि क्या haywire जा रहा है?


जवाबों:


284

आपको mapऑपरेटर आयात करने की आवश्यकता है :

import 'rxjs/add/operator/map'

3
कोणीय टीम और RxJS टीम दोनों इस तरह पूरे RX आयात करने के इस दृष्टिकोण की सिफारिश नहीं करते हैं। यदि आप ऐसा नहीं करना चाहिए। यह बहुत बड़ा है। ऊपर दिया गया पहला उत्तर ठीक है, लेकिन दूसरा ऐसा नहीं है। @ 0x1ad2 क्या आप दूसरे विकल्प के रूप में उस बड़े पैमाने पर आयात को शामिल नहीं करने के लिए अपना जवाब अपडेट कर सकते हैं?
ठंढा

2
यह गैर-सहज है। यह एक कोणीय 2+ विकास में वेधशाला को लागू करने के लिए एक निर्भरता के रूप में कहां प्रलेखित है?
जो

क्या यह आयनिक 3.20.0 पर लागू होता है? मुझे वही मुद्दा मिला क्योंकि आयनिक स्वचालित रूप से नक्शे को आयात नहीं करता था। स्पष्ट रूप से काम करना आयात करता है लेकिन मुझे यकीन नहीं है कि यह सही है।
लॉर्डड्रैगन

1
यह मेरे लिए कई के लिए समस्या को ठीक नहीं करता है मुझे rxjs के बजाय पाइप का उपयोग करना था / जोड़ने / ऑपरेटर / नक्शा मैंने पाइप और के साथ rxjs / ऑपरेटरों के आयात का उपयोग किया (नक्शा (res => res.json ()));
कोडफ्रीक

मैं ऐसे समय में कुछ Google खोजों के बाद यहां आया था जहां हम अब Angular 7 का उपयोग कर रहे हैं और RXJS कुछ परिवर्तनों से गुजरा है। नई विधि है import { map } from 'rxjs/operators', लेकिन एक अन्य उत्तर में अधिक विवरण हैं।
कोल्बी हंटर

78

मैंने अपने gulp-टाइपस्क्रिप्ट प्लगइन को नवीनतम संस्करण (2.13.0) में अपग्रेड किया और अब यह बिना हिच के संकलन करता है।

अद्यतन 1: मैं पहले gulp-typecript संस्करण 2.12.0 का उपयोग कर रहा था

अद्यतन 2: यदि आप कोणीय 2.0.0-rc.1 में अपग्रेड कर रहे हैं, तो आपको अपनी appBoot.ts फ़ाइल में निम्न करने की आवश्यकता है:

///<reference path="./../typings/browser/ambient/es6-shim/index.d.ts"/>
import { bootstrap } from "@angular/platform-browser-dynamic";
import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from "./path/AppComponent";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
// import 'rxjs/Rx'; this will load all features
import { enableProdMode } from '@angular/core';
import { Title } from '@angular/platform-browser';



//enableProdMode();
bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

Es6-shim / index.d.ts के संदर्भ में महत्वपूर्ण बात है

यह मानते हैं कि आपने यहाँ दिखाए गए अनुसार es-shim टाइपिंग स्थापित की है: यहां छवि विवरण दर्ज करें

टंकण पर अधिक यहाँ से कोणीय से स्थापित करें: https://angular.io/docs/ts/latest/guide/typescript-configuration.html###typings!


क्या आप उस पुराने संस्करण संख्या का उल्लेख कर सकते हैं जिसमें समस्या थी? धन्यवाद।
Meligy

1
@ मैली मैं पहले गल्प-टाइपस्क्रिप्ट संस्करण का उपयोग कर रहा था 2.12.0
ब्रैंडो

1
बहुत बढ़िया। मैंने त्रुटि संदेश के बारे में अपने लेख को समान मुद्दों वाले उपयोगकर्ताओं के लिए एक नोट शामिल करने के लिए अपडेट किया हैmap । बहुत बहुत धन्यवाद :)
मेलिगी

1
@ मैलीगी मुझे फिर से यही समस्या थी जब मैंने Angular2 RC में अपग्रेड किया। मैंने अपना उत्तर अपडेट करने के लिए ऊपर दिखाया कि मैंने इसे कैसे हल किया।
ब्रैंडो

6
import 'rxjs/Rx'; // भार सभी विशेषताएं
वाहिदएन

67

Rxjs 5.5 "प्रॉपर्टी 'मैप' ऑब्जर्वेबल टाइप पर मौजूद नहीं है।

समस्या इस तथ्य से संबंधित थी कि आपको सभी ऑपरेटरों के आसपास पाइप जोड़ने की आवश्यकता है।

इसे बदलो,

this.myObservable().map(data => {})

इसके लिए

this.myObservable().pipe(map(data => {}))

तथा

इस तरह से आयात नक्शा,

import { map } from 'rxjs/operators';

यह आपके मुद्दों को हल करेगा।


3
यह Rxjs 6 पर भी लागू होता है। मैं जिस भी ट्यूटोरियल को देखता हूं, उनके पास पाइप के बिना नक्शा कार्य होता है। यह मेरे लिए तब तक काम नहीं आया जब तक मैंने पाइप और आयातित नक्शे को 'rxjs / ऑपरेटर्स' से ठीक-ठीक उत्तर राज्यों के रूप में नहीं जोड़ा।
कीवान सदरलोदाबाई

हाँ, यह Rxjs 6 पर भी लागू होता है।
हिरण डीए वलावेज

41

मेरे मामले में यह केवल नक्शा और वादा शामिल करने के लिए पर्याप्त नहीं होगा:

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

मैंने इस समस्या को कई rxjs घटकों को आयात करके हल किया क्योंकि आधिकारिक दस्तावेज अनुशंसा करता है:

1) एक app / rxjs-ऑपरेटरों.ts फ़ाइल में आयात विवरण:

// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable

// See node_module/rxjs/Rxjs.js
// Import just the rxjs statics and operators we need for THIS app.

// 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';

2) आयात rxjs- ऑपरेटर ही आपकी सेवा में:

// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';

फिर भी, इस सवाल का सबसे अच्छा जवाब सबसे अधिक वोट नहीं है। यह इस सवाल का सबसे अच्छा जवाब है। साझा करने के लिए धन्यवाद। मैं कामना करता हूं कि दूसरे इसे वोट दें।
ठंढी

26

यदि आप VS2015 में इस त्रुटि को देखते हैं, तो यहाँ उल्लेखित एक समस्या और समाधान है:

https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507

इससे मुझे property map does not exist on observableसमस्या को हल करने में मदद मिली । इसके अलावा, सुनिश्चित करें कि आपके पास 1.8.2 से ऊपर का टाइपस्क्रिप्ट संस्करण है


8
टाइपस्क्रिप्ट केC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js साथ प्रतिस्थापित करना वीएस 15. के लिए काम करता था। ( फ़ाइल को बदलने के बाद बनाम फिर से शुरू करें )
tchelidze

उपर्युक्त फ़ाइल की जगह मेरे लिए भी काम किया
कृष्णन

अभी भी Microsoft से कोई अपडेट नहीं ... वे इसे ठीक क्यों नहीं कर रहे हैं?
पायोट्रेक

26

जो इस साल 6 का उपयोग करता है के लिए अंतिम जवाब:

अपने * .service.ts फ़ाइल में नीचे कमांड जोड़ें "

import { map } from "rxjs/operators";

**********************************************Example**Below**************************************
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}

मैं विंडोज़ 10 का उपयोग कर रहा हूं;

प्रकार वी। 2.3.4.0 के साथ कोणीय 6


ऐसा लगता है कि हम अब इसे app.module.ts में आयात नहीं कर सकते। अब हमें इसे प्रत्येक सेवा और घटक
एडम मेंडोज़ा


13

कोणीय 2x में

Example.component.ts में

import { Observable } from 'rxjs';

Example.component.html में

  Observable.interval(2000).map(valor => 'Async value');

कोणीय 5x या कोणीय 6x में:

Example.component.ts में

import { Observable, interval, pipe } from 'rxjs';
import {switchMap, map} from 'rxjs/operators';

Example.component.html में

valorAsync = interval(2500).pipe(map(valor => 'Async value'));

1
हमें सीधे मानचित्र के बजाय पाइप का उपयोग करने की आवश्यकता क्यों है?
कृष

10

कोणीय 2.0 अंतिम और वीएस 2015 के लिए अद्यतन 29 सितंबर 2016

वर्कअराउंड की अब आवश्यकता नहीं है, इसे ठीक करने के लिए आपको टाइपस्क्रिप्ट संस्करण 2.0.3 स्थापित करने की आवश्यकता है ।

इस github मुद्दे टिप्पणी पर संपादन से लिया गया फिक्स ।


3
मेरे पास यह मुद्दा है, मेरे पास 2.0.3 स्थापित है: /
हल्के फज

1
मैं टीएस 2.1.6 है, लेकिन अभी भी इस मुद्दे को देख
alltej

इस टिप्पणी के समय, टीएस नवीनतम 2.5.2 है। यह संस्करण मेरे लिए टूट रहा है। 2.3.x कार्यों का उपयोग करना।
सूअर का बच्चा

10

जैसा कि मैं समझता हूं कि यह rxjsअंतिम अद्यतन के कारण है। उन्होंने कुछ ऑपरेटरों और सिंटैक्स को बदल दिया है। इसके बाद हमें rxऑपरेटरों को इस तरह आयात करना चाहिए

import { map } from "rxjs/operators";

इसके अलावा

import 'rxjs/add/operator/map';

और हमें इस तरह से सभी ऑपरेटरों के चारों ओर पाइप जोड़ने की आवश्यकता है

this.myObservable().pipe(map(data => {}))

स्रोत यहां है


9

जैसा कि जस्टिन स्कोफिल्ड ने अपने उत्तर में सुझाया है, एंगुलर 5 की नवीनतम रिलीज़ और एंगुलर 6 के लिए, 1 जून, 2018 को, import 'rxjs/add/operator/map';टीएस त्रुटि को दूर करने के लिए बस पर्याप्त नहीं है: [ts] Property 'map' does not exist on type 'Observable<Object>'.

आवश्यक निर्भरताएं स्थापित करने के लिए नीचे दिए गए कमांड को चलाने के लिए आवश्यक है: npm install rxjs@6 rxjs-compat@6 --saveजिसके बाद mapआयात निर्भरता त्रुटि हल हो जाती है!


1
अधिक ब्रेकिंग परिवर्तन की तरह दिखता है जो चिंताजनक है
Noobie3001

8

मैं इसी तरह की त्रुटि का सामना कर रहा था। जब मैंने ये तीन काम किए तो यह हल हो गया:

  1. नवीनतम rxjs के लिए अद्यतन:

    npm install rxjs@6 rxjs-compat@6 --save
  2. आयात नक्शा और वादा:

    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/toPromise';
  3. एक नया आयात विवरण जोड़ा गया:

    import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';

7

ऐसा लगता है कि नवीनतम RxJS को टाइपस्क्रिप्ट 1.8 की आवश्यकता है इसलिए टाइपस्क्रिप्ट 1.7 ने उपरोक्त त्रुटि की रिपोर्ट की।

मैंने नवीनतम टाइपस्क्रिप्ट संस्करण में अपग्रेड करके इस समस्या को हल किया।


आप उपयोग कर रहे हैं tscआदेश से जांच करें tsc -v;-) "स्क्रिप्ट" का उपयोग और भी बेहतर विचार है, को देखने के stackoverflow.com/a/37034227/478584
tomaszbak

6

5 से 6 के संस्करण में परिवर्तन करते समय इसी तरह के त्रुटि संदेश पॉप अप होंगे। यहाँ rxjs-6 में परिवर्तन के लिए एक उत्तर दिया गया है।

व्यक्तिगत ऑपरेटरों को आयात करें, फिर pipeचेनिंग के बजाय उपयोग करें ।

import { map, delay, catchError } from 'rxjs/operators'; 

source.pipe(
  map(x => x + x),
  delay(4000),
  catchError(err => of('error found')),
).subscribe(printResult);

6

यदि आप कोणीय 4 का उपयोग आयात से नीचे कर रहे हैं। यह काम करना चाहिए ।

आयात 'rxjs / add / ऑपरेटर / नक्शा';

यदि आप कोणीय 5/6 का उपयोग कर रहे हैं, तो पाइप के साथ मानचित्र का उपयोग करें और एक के नीचे आयात करें

"rxjs / ऑपरेटर्स" से {map} आयात करें;


1

प्रॉपर्टी 'मैप' टाइप 'ऑब्जर्वेबल रिस्पॉन्स' कोणीय 6 पर मौजूद नहीं है

समाधान: अद्यतन कोणीय सीएलआई और कोर संस्करण

ng update @angular/cli           //Update Angular CLi 
ng update @angular/core          //Update Angular Core 
npm install --save rxjs-compat   //For Map Call For Post Method 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.