Observable.no es una función


Tengo problemas con la importación de la función Observable.of en mi proyecto. Mi Intellij lo ve todo. En mi código tengo:

import {Observable} from 'rxjs/Observable';

Y en mi código lo uso así:

return Observable.of(res);

¿Alguna idea?

 125
Author: Ajit Medhekar, 2016-04-12

18 answers

En realidad tengo importaciones desordenadas. En la última versión de RxJS podemos importarlo así:

import 'rxjs/add/observable/of';
 201
Author: uksz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-12 09:08:28

Si alguien está teniendo este problema mientras usa Angular 6 / rxjs 6 vea las respuestas aquí: No se pudo usar Observable.de in RxJS 6 y Angular 6

En resumen, necesitas importarlo así:

import { of } from 'rxjs';

Y luego en lugar de llamar

Observable.of(res);

Solo use

of(res);
 47
Author: jgosar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-28 11:42:11

Aunque suena absolutamente extraño, conmigo importaba capitalizar la 'O' en la ruta de importación de import {Observable} from 'rxjs/Observable. El mensaje de error con observable_1.Observable.of is not a function permanece presente si importo el Observable desde rxjs/observable. Extraño pero espero que ayude a otros.

 40
Author: Mark Langer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-29 06:16:33

Mi error tonto fue que olvidé agregar /add cuando se requiere el observable.

Era:

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

Que visualmente se ve bien porque el archivo rxjs/observable/of, de hecho, existe.

Debe ser:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
 25
Author: Eye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 19:59:08

Sólo para añadir,

Si está utilizando muchos de ellos, puede importar todos usando

import 'rxjs/Rx'; 

Como mencionó @Thierry Templier. Pero creo que si usted está utilizando operador limitado entonces usted debe importar operador individual como

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

Como mencionó @uksz.

Porque 'rxjs/Rx' importará todos los componentes Rx que definitivamente cuestan rendimiento.

Comparación

 18
Author: dharmesh kaklotar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-23 05:59:30

Los parches no funcionaban para mí, por cualquier razón, así que tuve que recurrir a este método:

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

// ...

return of(res)
 16
Author: Shaun Grady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-11 21:46:00

También puede importar todos los operadores de esta manera:

import {Observable} from 'rxjs/Rx';
 13
Author: Thierry Templier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-12 09:14:33
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';

.... 
return of(res)
 4
Author: letanthang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 06:51:15

Actualizado de Angular 5 / Rxjs 5 a Angular 6 / Rxjs 6?

Debe cambiar sus importaciones y su instanciación. Echa un vistazo a la entrada del blog de Damien

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);
    });
 4
Author: KVarmark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-16 09:47:03

Esto debería funcionar correctamente solo inténtalo.

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
 3
Author: alok singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-11 16:15:35

Estoy usando Angular 5.2 y RxJS 5.5.6

Este código hizo no trabajo:

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

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

      }

El siguiente código funcionó:

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

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

      }

Método de llamada:

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

Creo que podrían haber movido / cambiado la funcionalidad de() en RxJS 5.5.2

 3
Author: karunakar bhogyari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 12:15:23

Tuve este problema hoy. Estoy usando systemjs para cargar las dependencias.

Estaba cargando los Rxjs así:

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

En lugar de usar rutas use esto:

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

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

Este pequeño cambio en la forma en que systemjs carga la biblioteca solucionó mi problema.

 2
Author: Eli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-26 17:48:24

Para Angular 5+:

import { Observable } from 'rxjs/Observable';debería funcionar. El paquete observer también debe coincidir con la importación import { Observer } from 'rxjs/Observer'; si está utilizando observers que es

import {<something>} from 'rxjs'; hace una gran importación por lo que es mejor evitarlo.

 2
Author: Stabak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-29 12:13:15

RxJS 6

Al actualizar a la versión 6 de la biblioteca RxJS y no usar el paquete rxjs-compat, el siguiente código

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

Tiene que cambiarse a

import { of } from 'rxjs';
  // ...
  return of(res);
 2
Author: zgue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-05 15:08:46
import 'rxjs/add/observable/of';

Muestra un requisito de rxjs-compat

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

No tenía esto instalado. Instalado por

npm install rxjs-compat --save-dev

Y volver a ejecutar solucionado mi problema.

 1
Author: Esaith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-10 19:32:17

En rxjs v6, of el operador debe importarse como import { of } from 'rxjs';

 1
Author: Lasantha Basnayake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-26 08:53:37

De alguna manera incluso Webstorm lo hizo así import {of} from 'rxjs/observable/of'; y todo empezó a funcionar

 0
Author: Yevheniy Potupa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-01 12:12:26

Para mí (Angular 5 & RxJS 5) la importación de autocompletar sugerido:
import { Observable } from '../../../../../node_modules/rxjs/Observable';
mientras que debe ser (con todos los operadores estáticosfrom, of, e. c. t trabajando bien:
import { Observable } from 'rxjs/Observable';

 0
Author: Tomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-07 10:36:00