71 votes

Impossible de trouver le module 'rxjs-compat/Observable'.

Je suis en train de mettre à jour le code d'angular 4 vers angular 6. J'ai installé "rxjs" : "^6.3.2" et désinstallé rxjs-compact car j'ai migré le code pour utiliser les nouveaux opérateurs rxjs. J'obtiens toujours les erreurs suivantes. Je ne sais pas pourquoi

ERROR in [at-loader] ./node_modules/rxjs/BehaviorSubject.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/BehaviorSubject'.

ERROR in [at-loader] ./node_modules/rxjs/Observable.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/Observable'.

ERROR in [at-loader] ./node_modules/rxjs/Observer.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/Observer'.

ERROR in [at-loader] ./node_modules/rxjs/Operator.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/Operator'.

ERROR in [at-loader] ./node_modules/rxjs/Subject.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/Subject'.

ERROR in [at-loader] ./node_modules/rxjs/Subscription.d.ts:1:15
    TS2307: Cannot find module 'rxjs-compat/Subscription'.

1 votes

Avez-vous accidentellement laissé des import dans votre code faisant référence à la rxjs-compat paquet ?

1 votes

Essayez npm install rxjs@6 rxjs-compat@6 --save

0 votes

Bonjour Peter, ai-je vraiment besoin d'installer xjs@6 rxjs-compat@6. Le nouveau rxjs 6 ne devrait-il pas fonctionner sans lui ?

110voto

Jandro Rojas Points 138

Aucune de ces réponses n'est correcte. L'installation de rxjs-compat est juste une solution de contournement. Tout ce que vous avez à faire est de corriger les importations. Utilisez :

import { Observable } from 'rxjs';

Au lieu de :

import { Observable } from 'rxjs/Observable';

Cette dernière importation est censée disparaître lorsqu'ils se décideront enfin à tuer rxjs-compat (très bientôt, espérons-le)... alors attention, vous devez mettre à jour votre code !

1 votes

Peut-on utiliser la même chose dans le package.json, etc. Je ne veux vraiment pas exécuter ceci sur chaque machine de développeur.

1 votes

Je ne suis pas sûr de suivre votre question. Malheureusement, vous devez soit mettre à jour tous les imports (un simple search and replace suffira), soit utiliser le package compat (que je ne recommande pas car il s'agit d'une solution temporaire). Le package.json assure seulement la version des paquets que vous utilisez, ce que vous faites avec eux est dans le code.

2 votes

Cette réponse doit être upvoted plus parce que c'est la meilleure réponse.

109voto

Hameed Syed Points 1201

Cela résoudra le problème :

npm install --save rxjs-compat 

Voir ce problème GitHub

Modifier Le 10 octobre 2019, vous pouvez utiliser la syntaxe ci-dessous car la précédente ou la précédente était une solution de contournement.

import { Observable } from 'rxjs/Observable';

Document de référence : https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md#dropping-the-compatibility-layer

1 votes

Dois-je l'ajouter comme dépendance dans le fichier package.json ? J'ai mis à jour tous les opérateurs rxjs de l'application pour utiliser les nouvelles fonctionnalités de rxjs 6. Malheureusement, les fichiers d.ts sous l'observable font référence à rxjs-compat. Par exemple, export * from 'rxjs-compat/observable/bindNodeCallback' ;.

0 votes

Il n'est pas nécessaire d'ajouter la dépendance manuellement, car Cli le fait pour vous : "^6.3.3" comme entrée sous le nœud "dependencies".

6 votes

Ce n'est pas la bonne réponse... l'utilisation de rxjs-compat est juste une solution temporaire qu'ils ont créée pour continuer à utiliser les anciennes importations en toute sécurité dans la nouvelle version... ce que vous devriez faire est de mettre à jour vos importations. Voir ma réponse ci-dessous

8voto

mscmnc Points 11

Comme l'a déjà dit Jandro Rojas, l'installation de la dépendance rxjs-compat n'est qu'un palliatif temporaire. À l'avenir, vous devrez toujours corriger cela. La meilleure solution est d'utiliser un guide de mise à jour d'Angular https://update.angular.io/ à cause de certaines erreurs qui peuvent être corrigées automatiquement.

D'après mon expérience des erreurs "Impossible de trouver le module 'rxjs-compat/Observable'", "Impossible de trouver le module 'rxjs-compat'", etc.

  • Vous devriez réparer toutes les importations. De :

    import { Observable } from 'rxjs/Observable'

A :

import { Observable } from 'rxjs'
  • Si vous utilisez des classes observables RxJS ou autres, vous devez mettre à jour votre code. Utilisez ce guide -> Guide de mise à jour de RxJS v5.x à v6

  • Vérifiez attentivement vos dépendances, elles doivent être mises à jour aussi pour utiliser la dernière version de RxJs. Dans mon cas, "ngx-bootstrap" était périmé.

6voto

Aman Gupta Points 61
npm install --save rxjs-compat

et relancez le serveur avec ng serve

Cela fonctionne pour moi.

4voto

Yogesh Patil Points 211

Ouvrez simplement l'invite de commande et ajoutez la commande ci-dessous dans votre dossier racine.

npm i rxjs-compat

J'espère que ça marche

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X