Angular- "내 보낸 멤버 'Observable'이 없습니다"


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-compat / Observable'모듈을 찾을 수 없습니다. node_modules / rxjs / observable / of.d.ts (1,15) : 오류 TS2307 : 'rxjs-compat / observable / of'모듈을 찾을 수 없습니다. src / app / hero.service.ts (2,10) : 오류 TS2305 : 모듈 ' "F : / angular-tour-of-heroes / node_modules / rxjs / Observable"'에 내 보낸 멤버 'Observable'이 없습니다. src / app / hero.service.ts (15,12) : 오류 TS2304 : 'of'이름을 찾을 수 없습니다.

package.json Angular 버전의 파일 :

버전


3
사용중인 프레임 워크의 이름은 Angular입니다. AngularJS는 다른 프레임 워크입니다.
JB 니 제트

9
RxJS 6을 사용하고있는 것 같습니다. 해당 버전을 사용할 때 가져 오기를 변경해야합니다 (릴리스 정보 참조). Angular 6을 사용하지 않는다면 RxJS 5를 사용해야합니다.
JB Nizet

thx. 저는 Angular6.0을 사용하고 있습니다 ~
Thomas Lee

5
다음은 관련 문서입니다 : next.angular.io/guide/rx-library . 가져 오기는 사용중인 것이 아닙니다.
JB 니 제트

답변:


205

자세한 내용 은 Angular 6 에서 도움이 될 수 있습니다이 문서를 참조하십시오

  1. rxjs : 작성 방법, 유형, 스케줄러 및 유틸리티
import {Observable, Subject, asapScheduler, pipe, from, from, interval, merge, fromEvent} from 'rxjs';
  1. rxjs / operators : 모든 파이프 가능 연산자 :
'rxjs / operators'에서 {맵, 필터, 스캔} 가져 오기;
  1. rxjs / webSocket : 웹 소켓 주제 구현
'rxjs / webSocket'에서 {webSocket} 가져 오기;
  1. rxjs / ajax : Rx 아약스 구현
'rxjs / ajax'에서 {ajax} 가져 오기;
  1. rxjs / testing : 테스트 유틸리티
'rxjs / testing'에서 import {TestScheduler};

4
어떻게 '이 운동을 할 수 있습니까?' 처음부터? SO 검색은 작동하지만 라이브러리가 덜 사용되는 경우.
cjb110

12
npm install rxjs-compat --save
EvAlex

115

분명히 Angular 6.0.0으로 업데이트 한 후 (오류 로그에서 알 수 있듯이) rxjs-compat가 누락되었습니다.

npm install rxjs-compat --save설치를 실행하십시오 . 고쳐야합니다.


3
나는 또한 같은 문제에 직면하고 있지만 이전 버전과의 호환성 패키지를 사용하지 않으려면 어떻게해야합니까?
Prasanna Sasne

2
rxjs-compat를 사용하지 않으려면 어떻게해야합니까?
Enrico

2
이것이 정답이어야합니다. 앞으로 나아가는 정답은 아니지만 확실히 "지금 바로"답입니다.
William Terrill

96

그냥 넣어 :

import { Observable} from 'rxjs';

그냥 그렇게 더 많거나 적은 아무것도 없습니다.


6
'rxjs / Observable'대신 'rxjs'를 사용하면 문제가 해결되었습니다. 질문 소유자가 답변을 수락해야한다고 생각합니다.
Levent Divilioglu

1
이것은 확실히 작동합니다. 그러나 트리 쉐이킹도 지원합니까?
Sandy

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 릴리스로 RVJS를 역 회전 시키면 Angular 5.2.x에서 수정되었습니다.

package.json을 엽니 다.

변경 "rxjs": "^6.0.0","rxjs": "^5.5.10",

운영 npm update


rxjs 6은 Angular 6에서만 지원되므로 이것이 최선의 방법이라고 생각합니다.
David D.

4

그냥 삭제 /Observable에서'rxjs/Observable';

그런 다음 Cannot find module 'rxjs-compat/Observable'터미널 아래 줄에 넣고 Enter 키를 누릅니다.

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

글쎄요, 그가 시작한 오류 였고, 수출은 없었습니다.
Zlatko 2016 년

2

angular-split구성 요소는 Angular 6에서 지원되지 않으므로 응용 프로그램의 종속성에 따라 Angular 6 설치와 호환됩니다.

업데이트 될 때 까지이 작업을 수행하려면 다음을 사용하십시오.

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

0

내 경우에는 컴퓨터에 이전 버전의 ng cli가 있었기 때문에이 오류가 발생했습니다.

실행 후 문제가 해결되었습니다.

ng update

ng update @angular/cli


0

업데이트 각도 - 메모리 - 웹 API 버전. angular-tour-of-heroes 튜토리얼 중에 설치된 기본 angular-in-memory-web-api 버전 은 0.4입니다. 내 경우에는 매력처럼 작동했습니다. (RxJS 6과 함께 Angular 7 사용)

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

-3

사용하다 return Observable.of(HEROES);


1
이 답변은 정확하고 유용 할 수 있지만, 문제를 해결하는 데 도움이되는 방법을 설명하기 위해 설명과 함께 포함하는 것이 좋습니다. 이것은 작동을 멈추게하는 변경 (아마도 관련이없는)이 있고 사용자가 한 번 작동 한 방식을 이해해야하는 경우 특히 유용합니다.
Erty Seidohl

질문을주의 깊게 읽으면 5 가 아닌 Angular 6 및 rxjs 6에 대한 언급이 표시됩니다 .이 문제는 rxjs v6 +에만 해당하는 반면 게시 한 솔루션은 rxjs (및 Angular) v5와 관련이 있습니다.
Zlatko 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.