Arrivé lors de la mise à niveau de l'application IONIC de la version 3 à 4
Mise à jour de tous les plugins et modules vers les derniers disponibles, sans aucune chance.
ERROR in ./node_modules/ionic-angular/components/app/app.js 24:35-43
"export 'DOCUMENT' was not found in '@angular/platform-browser'
ERROR in ./node_modules/ionic-angular/module.js 195:71-79
"export 'DOCUMENT' was not found in '@angular/platform-browser'
[ERROR] An error occurred while running subprocess ng.
Ceci est mon IONIC INFO
Ionic info:
Ionic:
Ionic CLI : 5.1.0 (C:\Users\Acer\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 4.6.0
@angular-devkit/build-angular : 0.800.6
@angular-devkit/schematics : 8.0.6
@angular/cli : 8.0.6
@ionic/angular-toolkit : 2.0.0
Cordova:
Cordova CLI : 9.0.0 ([email protected])
Cordova Platforms : not available
Cordova Plugins : not available
Utility:
cordova-res : 0.5.1
native-run : 0.2.6
System:
Android SDK Tools : 26.1.1 (C:\Users\Acer\AppData\Local\Android\sdk)
NodeJS : v10.11.0 (C:\Program Files\nodejs\node.exe)
npm : 6.9.2
OS : Windows 10
apprécierait, quelqu'un pourrait être utile.
DOCUMENT est supprimé de @ angular/platform-browser Si vous utilisez DOCUMENT de @ angular/platform-browser, vous devez commencer à l'importer de @ angular/common.
jusqu'à ce que le dépôt soit réparé, vous pouvez faire comme ci-dessous pour le réparer pour vous ...
DANS
\ node_modules\ionic-angular\components\app\app.js
Remplacer
import { DOCUMENT, Title } from '@angular/platform-browser';
avec
import { DOCUMENT } from '@angular/common';
import { Title } from '@angular/platform-browser';
Et en
\ node_modules\ionic-angular\module.js
Remplacer
import { DOCUMENT, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
Avec
import { DOCUMENT } from '@angular/common';
import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
J'ai rencontré ce problème lors de la migration vers angular 8.x.x.
En fait, "DOCUMENT" a été déprécié de '@angular/platform-browser'
et fait maintenant partie de '@angular/common'
.
Les plug-ins plus anciens tentent toujours d'importer un document à partir de '@angular/platform-browser'
. Vérifiez simplement les fichiers .js et .js.map sous le dossier 'fesm5' ainsi que le dossier 'fesm2015' du plugin dans la section node_modules.
Mieux vaut mettre à jour le plugin spécifique vers la dernière version compatible angular.
Dans mon cas, le plugin troublant était 'ngx-clipboard'
.
Il semble que vous essayez de mettre à niveau votre projet Ionic de v3 vers v4 en ligne plutôt que de créer un nouveau projet v4 et de migrer votre ancien code.
Voir le guide de migration: https://ionicframework.com/docs/building/migration . Plus précisément, ce conseil:
Lors de la migration d'une application pour tirer parti de cette nouvelle mise en page, il est suggéré qu'un nouveau projet "base" soit réalisé avec la CLI. Ensuite, avec la nouvelle disposition du projet, migrez les fonctionnalités de l'application pièce par pièce. Pages/composants/etc. doit être déplacé dans le dossier src/app /.
Si vous essayez cela en gardant votre code en place et en installant @ ionic/angular dans le projet en cours plutôt que de créer un nouveau projet puis de copier le code fonctionnalité par fonctionnalité, vous allez rencontrer de nombreux problèmes. Si vous faites cela, je suggère de recommencer en utilisant la stratégie décrite ci-dessus. Après en avoir fait moi-même quelques-unes, c'est de loin votre meilleure option.
à l'intérieur de ce fichier "\ node_modules\ionic-angular\module.js" && app.js, nous ne pouvons pas changer si nous modifions manuvialement sa prise;
donc je suggère BehaviorSubject de la fonctionnalité angular, nous pouvons obtenir des valeurs de changement de composant dans tout autre composant
page.ts // composant
importer {BehaviorSubject} depuis 'rxjs';
public status = new BehaviorSubject('');
currentStatus = this.status.asObservable()
; // écrit ce code dans les services de classe d'exportation
changeStatus(status){
console.log('current status from common services:',status)
this.status.next(status); // pass value to public observable variable
}
vous pouvez souscrire la réponse dans un autre composant