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 --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에는 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.