programing

관측 가능한 .of는 함수가 아닙니다.

linuxpc 2023. 5. 31. 15:22
반응형

관측 가능한 .of는 함수가 아닙니다.

수입에 문제가 있습니다.Observable.of내 프로젝트에서 기능합니다.내 인텔리는 모든 것을 봅니다.내 코드에는 다음이 있습니다.

import {Observable} from 'rxjs/Observable';

제 코드에서는 이렇게 사용합니다.

return Observable.of(res);

아이디어 있어요?

사실 저는 수입품이 엉망입니다.RxJS의 최신 버전에서는 다음과 같이 가져올 수 있습니다.

import 'rxjs/add/observable/of';

Angular >= 6 및 rxjs 버전 6 이상을 사용하는 동안 이 문제가 발생하는 경우 여기에서 답을 참조하십시오. "Could not use Observable.of in RxJs 6 and Angular 6"

간단히 말해서 다음과 같이 가져올 필요가 있습니다.

import { of } from 'rxjs';

그리고 전화하는 대신에

Observable.of(res);

그냥 쓰기

of(res);

완전히 이상하게 들리지만, 저에게는 수입 경로에서 'O'를 대문자로 쓰는 것이 중요했습니다.import {Observable} from 'rxjs/Observable다음과 같은 오류 메시지가 표시됩니다.observable_1.Observable.of is not a function관찰 가능 항목을 가져올 경우 현재 상태로 유지rxjs/observable이상하지만 다른 사람들에게 도움이 되었으면 좋겠습니다.

내 어리석은 실수는 추가하는 것을 잊어버린 것입니다./add관찰 가능한 것을 요구할 때.

이전:

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

시각적으로 괜찮아 보이는 이유는rxjs/observable/of파일이 실제로 존재합니다.

해야 할 일:

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

패치 적용은 어떤 이유에서건 제게 효과가 없었기 때문에 다음 방법을 사용해야 했습니다.

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

// ...

return of(res)

덧붙이자면,

대부분을 사용하는 경우 다음을 사용하여 모두 가져올 수 있습니다.

import 'rxjs/Rx'; 

@Tierry Templier가 언급한 바와 같이.하지만 제한된 연산자를 사용하고 있다면 다음과 같은 개별 연산자를 가져와야 한다고 생각합니다.

import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';

@uksz가 언급한 바와 같이.

왜냐하면 'rxjs/Rx'는 성능이 확실히 필요한 모든 Rx 구성 요소를 가져올 것이기 때문입니다.

비교

다음과 같은 방법으로 모든 연산자를 가져올 수도 있습니다.

import {Observable} from 'rxjs/Rx';

Angular 5.2와 RxJS 5.5.6을 사용하고 있습니다.

이 코드는 작동하지 않았습니다.

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

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

      }

아래 코드가 작동했습니다.

    import { Observable } from 'rxjs/Observable';
    import { Subscriber } from 'rxjs/Subscriber';

     getHeroes(): Observable<Hero[]> 
     {
          return Observable.create((observer: Subscriber<any>) => {
              observer.next(HEROES);
              observer.complete();
          });

      }

호출 방법:

this.heroService.getHeroes()
      .subscribe(heroes => this.heroes = heroes);

RxJS 5.5.2에서 () 기능을 이동/변경할 수 있다고 생각합니다.

이것은 제대로 작동할 것입니다. 그냥 시도해 보세요.

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';

.... 
return of(res)

Angular 5 / Rxjs 5에서 Angular 6 / Rxjs 6으로 업그레이드하시겠습니까?

가져오기 및 인스턴스화를 변경해야 합니다.데미안의 블로그 게시물 확인하기

Tl;dr:

import { Observable, fromEvent, of } from 'rxjs';

const yourResult = Observable
    .create(of(yourObservable))
    .startWith(null)
    .map(x => x.someStringProperty.toLowerCase());

//subscribe to keyup event on input element
Observable
    .create(fromEvent(yourInputElement, 'keyup'))
    .debounceTime(5000)
    .distinctUntilChanged()
    .subscribe((event) => {
        yourEventHandler(event);
    });

RxJS 6

의 버전 6으로 업그레이드하는 경우RxJS라이브러리 및 사용하지 않음rxjs-compat다음 코드를 패키지화합니다.

import 'rxjs/add/observable/of';   
  // ...
  return Observable.of(res);

로 변경해야 합니다.

import { of } from 'rxjs';
  // ...
  return of(res);

나(Angular 5 & RxJS 5)의 경우 자동 완성 가져오기가 다음을 제안했습니다.

import { Observable } from '../../../../../node_modules/rxjs/Observable';

해야 하는 동안(모든 정적 연산자 포함)from,ofe.c. 정상적으로 작동하지 않음

import { Observable } from 'rxjs/Observable';

저는 오늘 이 문제를 겪었습니다.종속성을 로드하기 위해 systemjs를 사용하고 있습니다.

Rxjs를 다음과 같이 로드하고 있었습니다.

...
    paths: {
        "rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
    },
...

사용 경로 대신 다음을 사용합니다.

var map = {
...
'rxjs':                       'node_modules/rxjs',
...
}

var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}

시스템 js가 라이브러리를 로드하는 방식에 대한 이 작은 변화가 제 문제를 해결했습니다.

Angular 5+의 경우:

import { Observable } from 'rxjs/Observable';작동해야 합니다..import { Observer } from 'rxjs/Observer';만약 당신이 관찰자를 사용하고 있다면, 그것은.

import {<something>} from 'rxjs';중요한 역할을 하므로 피하는 것이 좋습니다.

import 'rxjs/add/observable/of';

rxjs-compat의 요구 사항을 보여줍니다.

require("rxjs-compat/add/observable/of");

이것을 설치하지 않았습니다.설치자

npm install rxjs-compat --save-dev

다시 실행하면 문제가 해결됩니다.

rxjsv6,of는 " 연자를다가합야니다와져로"로 .import { of } from 'rxjs';

요.import {of} from 'rxjs/observable/of';했습니다.

언급URL : https://stackoverflow.com/questions/36568388/observable-of-is-not-a-function

반응형