Le code ci-dessous fonctionne correctement en local, mais après le déploiement, il ne fonctionne pas.
Angular CLI: 6.0.3 Node: 8.11.2 OS: win32 x64 Angular: ... Package Version -------------------------------------- @angular-devkit/architect 0.6.3 @angular-devkit/core 0.6.3 @angular-devkit/schematics 0.6.3 @schematics/angular 0.6.3 @schematics/update 0.6.3 rxjs 6.2.0 typescript 2.7.2
Après avoir changé le code ci-dessus en code ci-dessous fonctionnant correctement à la fois localement et sur le serveur de production.
import { timer } from 'rxjs/observable/timer'; let somethingTimer = timer(5000); // rest of other code.
Pourquoi cela se produit une explication.
Configuration:
import { Observable } from "rxjs/Observable"; let somethingTimer = Observable.timer(5000); // rest of other code.
Erreur dans le journal de la console strong>
TypeError: a.timer n'est pas une fonction
3 Réponses :
Vous êtes passé de rxjs 5 à 6. Il y a eu de nombreux changements de 5 à 6.
Le premier exemple est le code rxjs 5 et le second est comment vous le faites en 6.
Cela a à voir avec la façon dont "timer" est importé. Dans le cas 1, la minuterie vient de l'objet "observable" mais sur le second est un let séparé importer {timer}
à mon avis, le moyen de parier est d'importer {timer} depuis 'rxjs / observable / timer';
j'espère vous aider
Le problème est que vous avez RxJS 6 mais que vous essayez d'utiliser timer
comme dans RxJS 5 (RxJS 5 utilisait désormais un patch obsolète de la classe Observable
).
Depuis RxJS 6, la seule façon d'utiliser les opérateurs et les soi-disant «méthodes de création observables» est de les importer directement depuis 'rxjs'
ou 'rxjs / operators'
respectivement :
import { timer } from 'rxjs'; let somethingTimer = timer(5000);
Pour les documents sur la migration, voir:
J'ai également recherché cela et trouvé medium. com / code-divoire /… . Merci d'avoir expliqué.
Qu'entendez-vous par «ne fonctionne pas»?
@martin J'ai mis à jour la question avec un message d'erreur de la console après l'inspection.