Angular 2 베타 17 : 'Observable <Response>'유형에 'map'속성이 없습니다.


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 ) 피 감시 /지도 기능에 대해 잘 작동 된 모든 beta16에서. 업그레이드 후 다음 오류가 발생하여 타이프 스크립트를 변환하려고 할 때 발생합니다.

  1. 'Observable'유형에 'map'속성이 존재하지 않습니다 (관찰 가능한 맵을 사용한 위치)
  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 베타 12 및 RxJs 5 베타 3의 관찰 가능한 오류

내 appBoot.ts는 다음과 같습니다 (이미 rxjs / map을 참조하고 있습니다).

///<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
]);

아무도 건초 더미가 어떻게 될지 알고 있습니까?


답변:


284

map연산자 를 가져와야합니다 .

import 'rxjs/add/operator/map'

3
Angular 팀과 RxJS 팀은 이처럼 전체 RX를 가져 오는이 방법을 권장하지 않습니다. 그렇게하지 말아야합니다. 너무 큽니다. 위의 첫 번째 대답은 괜찮지 만 두 번째 대답은 그리 많지 않습니다. @ 0x1ad2 대량 가져 오기를 두 번째 옵션으로 포함하지 않도록 답변을 업데이트 할 수 있습니까?
서리가 내린

2
이것은 직관적이지 않습니다. 이것은 Angular 2+ 개발에서 Observable 구현에 대한 종속성으로 어디에 문서화되어 있습니까?
Joe

이온 3.20.0에 적용 할 수 있습니까? 이온이지도를 자동으로 가져 오지 않았기 때문에 같은 문제가 발생했습니다. 가져 오기가 명시 적으로 작동하지만 이것이 올바른지 확실하지 않습니다.
LordDraagon

1
이것은 문제를 해결하지 못했습니다. rxjs / add / operator / map 대신에 Pipe를 사용해야했습니다. 파이프와 .pipe (map (res => res.json ())와 함께 rxjs / operators import를 사용했습니다.
codefreaK

우리가 지금 Angular 7을 사용하고 RXJS가 약간의 변화를 겪었던 시간에 일부 Google 검색 후 여기에 왔습니다. 새로운 방법은입니다 만 import { map } from 'rxjs/operators', 다른 답변 에는 자세한 내용이 있습니다.
Colby Hunter

78

gulp-typescript 플러그인을 최신 버전 (2.13.0)으로 업그레이드했으며 이제 장애없이 컴파일됩니다.

업데이트 1 : 나는 이전에 gulp-typescript 버전 2.12.0을 사용하고 있었다

업데이트 2 : Angular 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에 대한 참조입니다.

여기에 표시된대로 es6-shim 타이핑을 설치했다고 가정합니다. 여기에 이미지 설명을 입력하십시오

Angular에서 입력하는 타이핑에 대한 자세한 내용은 다음을 참조 하십시오.


문제가 있었던 이전 버전 번호를 말씀해 주시겠습니까? 감사.
Meligy

1
@Meligy 나는 이전에 gulp-typescript 버전 2.12.0을 사용하고 있었다
brando

1
대박. 나는 한 업데이트 정보] 나의 기사 map유사한 문제를 가진 사용자에 대한 메모를 포함하는 오류 메시지. 고마워 :)
Meligy

1
@Meligy Angular2 RC로 업그레이드 할 때이 같은 문제가 다시 발생했습니다. 어떻게 해결했는지 보여주기 위해 위의 답변을 업데이트했습니다.
brando

6
import 'rxjs/Rx'; // 모든 기능로드
VahidN

67

Rxjs 5.5“속성 'map'이 Observable 유형에 없습니다.

문제는 모든 연산자 주위에 파이프를 추가해야한다는 사실과 관련이 있습니다.

이것을 바꾸십시오,

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

이에

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

이와 같은 맵 가져 오기

import { map } from 'rxjs/operators';

문제를 해결합니다.


3
이것은 Rxjs 6에도 적용됩니다. 내가 본 튜토리얼마다 파이프가없는 맵 기능이 있습니다. 파이프를 추가하고 'rxjs / operators'에서 맵을 정확히 응답 상태로 가져 오기 전까지는 작동하지 않았습니다.
Keyvan Sadralodabai

예, Rxjs 6에도 적용됩니다.
Hiran DA Walawage

41

제 경우에는지도와 약속 만 포함하면 충분하지 않습니다.

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

공식 문서 권장 사항에 따라 여러 rxjs 구성 요소를 가져 와서이 문제를 해결했습니다 .

1) 하나의 app / rxjs-operators.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-operator 자체를 가져옵니다.

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

다시 한 번,이 질문에 대한 가장 좋은 답변은 가장 많은 표를 얻지 못했습니다. 이것이이 질문에 대한 최선의 답변입니다. 공유해 주셔서 감사합니다. 다른 사람들이 이것을 투표하기를 바랍니다.
서리가 내린

26

VS2015 에서이 오류가 발생하면 github 문제 및 해결 방법이 여기에 언급되어 있습니다.

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 typescriptService은 (VS 15 근무 파일을 교체 한 후 대를 다시 시작 )
tchelidze

위에서 언급 한 파일을 교체하면 나에게도 효과가 있었다
Krishnan

여전히 Microsoft의 업데이트가 없습니다 ... 왜 수정하지 않습니까?
Piotrek

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()));
}
}

Windows 10을 사용하고 있습니다.

타입 스크립트 V 2.3.4.0의 angular6


더 이상 app.module.ts에서 가져올 수없는 것 같습니다. 이제 각 서비스 및 구성 요소에서 가져와야합니다
Adam Mendoza

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

&

npm install rxjs@6 rxjs-compat@6 --save

나를 위해 일했다


13

각도 2 배

example.component.ts에서

import { Observable } from 'rxjs';

example.component.html에서

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

Angular 5x 또는 Angular 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
파이프 대신 맵을 사용해야하는 이유는 무엇입니까?
Krish

10

2016 년 9 월 29 일 Angular 2.0 Final & VS 2015 업데이트

해결 방법은 더 이상 필요하지 않습니다 . TypeScript 버전 2.0.3설치하면 됩니다.

이 github 이슈 코멘트 의 편집에서 수정되었습니다 .


3
이 문제가 있고, 2.0.3도 설치했습니다 : /
Mild Fuzz

1
나는 TS 2.1.6을 가지고 있지만 여전히 문제를보고있다
alltej

이 의견을 제출할 당시 TS latest는 2.5.2입니다. 이 버전은 나를 위해 속보입니다. 2.3.x를 사용하면 작동합니다.
PigBoT

10

내가 알기로는 rxjs마지막 업데이트 때문입니다 . 일부 연산자와 구문이 변경되었습니다. 그런 다음 rx연산자를 이와 같이 가져와야 합니다

import { map } from "rxjs/operators";

이 대신

import 'rxjs/add/operator/map';

그리고 우리는 이와 같은 모든 연산자 주위에 파이프를 추가해야합니다

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

소스는 여기


9

Justin Scofield가 그의 답변에서 제안한 것처럼 2018 년 6 월 1 일과 같이 Angular 5의 최신 릴리스와 Angular 6에 import 'rxjs/add/operator/map';대해서는 TS 오류를 제거하기에 충분하지 않습니다. [ts] Property 'map' does not exist on type 'Observable<Object>'.

필수 종속성을 설치하려면 아래 명령을 실행해야합니다. 그 npm install rxjs@6 rxjs-compat@6 --savemap가져 오기 종속성 오류가 해결됩니다!


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에는 typescript 1.8이 필요하므로 typescript 1.7은 위의 오류를보고합니다.

최신 타이프 스크립트 버전으로 업그레이드하여이 문제를 해결했습니다.


tscfrom 명령을 사용 하는 경우 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

angular4를 사용하는 경우 아래 가져 오기를 사용하십시오. 작동해야합니다.

수입 'rxjs / add / operator / map';

angular5 / 6을 사용하는 경우 파이프와 함께 맵을 사용하고 하나 아래로 가져 오기

"rxjs / operators"에서 {맵} 가져 오기;


1

'관찰 가능한 응답'각도 6 유형에 'map'속성이 없습니다.

솔루션 : Angular CLI 및 핵심 버전 업데이트

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 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.