Page faz parte das declarações de 2 módulos: Erro na produção de compilation iônica

Quando eu executo npm run ionic: build eu sou capaz de construir com sucesso. Mas quando eu executo npm run ionic: build –prod eu estou recebendo a seguinte mensagem de erro.

Error: Type PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts is part of the declarations of 2 modules: AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts! Please consider moving PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts to a higher module that imports AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts. You can also create a new NgModule that exports and includes PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts then import that NgModule in AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts. Error: Type PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts is part of the declarations of 2 modules: AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts! Please consider moving PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts to a higher module that imports AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts. You can also create a new NgModule that exports and includes PatientDetailPage in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.ts then import that NgModule in AppModule in /home/shiva/Ionic/af2-lists/src/app/app.module.ts and PatientDetailPageModule in /home/shiva/Ionic/af2-lists/src/pages/patient-detail/patient-detail.module.ts. at syntaxError (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:1550:34) at CompileMetadataResolver._addTypeToModule (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:14655:31) at /home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:14543:27 at Array.forEach (native) at CompileMetadataResolver.getNgModuleMetadata (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:14534:54) at addNgModule (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:23050:58) at /home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:23061:14 at Array.forEach (native) at _createNgModules (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:23060:26) at analyzeNgModules (/home/shiva/Ionic/af2-lists/node_modules/@angular/compiler/bundles/compiler.umd.js:22935:14) 

Eu entendo que estou carregando os mesmos módulos várias vezes, mas não consegui entender como removê-los.

meu app.module.ts

 @NgModule({ imports: [ BrowserModule, IonicModule.forRoot(MyApp), AngularFireDatabaseModule, AngularFireModule.initializeApp(firebaseConfig), AngularFireOfflineModule, IonicStorageModule.forRoot() // PatientDetailPage ], declarations: [ MyApp, HomePage, PatientDetailPage ], entryComponents: [ MyApp, HomePage, PatientDetailPage ], providers: [ StatusBar, SplashScreen, //AngularFireModule, //Storage, {provide: ErrorHandler, useClass: IonicErrorHandler} ], bootstrap: [IonicApp], }) 

O patient-detail.module.ts é

 import { NgModule } from '@angular/core'; import { IonicPageModule } from 'ionic-angular'; import { PatientDetailPage } from './patient-detail'; @NgModule({ declarations: [ PatientDetailPage, ], imports: [ IonicPageModule.forChild(PatientDetailPage), ] }) export class PatientDetailPageModule { } 

Este é um erro básico de angular. Você pode ver o problema aqui . Então a resposta que é aceita até agora é usar módulo de compartilhamento. Você pode fazer assim:
– Crie um share.module.ts
Import , declaration e export seu componente neste share.module.ts

 import { NgModule } from '@angular/core'; import {SharedComponentA} from "./SharedComponentA"; import {SharedComponentB} from "./SharedComponentB"; @NgModule({ imports: [ ], declarations: [ SharedComponentA, SharedComponentB ], providers: [ ], exports: [ SharedComponentA, SharedComponentB ] }) export class SharedModule {} 

– Se você quiser usar seu componente em uma página iônica (página de carregamento lento) , importe o módulo de compartilhamento no módulo dessa página iônica:

 import {SharedModule } from './SharedModule'; @NgModule({ imports: [ SharedModule //.. ], //.. }) 

– Se você quiser usar seu componente em outro componente ou nenhuma página de carregamento lento , importe o módulo de compartilhamento em seu app.module.ts como acima.
Veja mais sobre ngModule

Se você estiver usando um componente como um entryComponent dentro de um módulo, não será necessário declará-lo dentro do Módulo. Tente remover PatientDetailPage das declarations no seu app.module.ts .

Portanto, a melhor maneira de fazer isso, na minha opinião, é export o PatientDetailPage do seu PatientDetailModule e importar o PatientDetailModule para o Módulo do aplicativo.

Módulo App

 @NgModule({ imports: [ BrowserModule, IonicModule.forRoot(MyApp), AngularFireDatabaseModule, AngularFireModule.initializeApp(firebaseConfig), AngularFireOfflineModule, PatientDetailModule, IonicStorageModule.forRoot() // PatientDetailPage ], declarations: [ MyApp, HomePage ], entryComponents: [ MyApp, HomePage, PatientDetailPage ], providers: [ StatusBar, SplashScreen, //AngularFireModule, //Storage, {provide: ErrorHandler, useClass: IonicErrorHandler} ], bootstrap: [IonicApp], }) 

Módulo do Paciente

 import { NgModule } from '@angular/core'; import { IonicPageModule } from 'ionic-angular'; import { PatientDetailPage } from './patient-detail'; @NgModule({ declarations: [ PatientDetailPage, ], imports: [ IonicPageModule.forChild(PatientDetailPage), ], exports: [ PatientDetailPage ] }) export class PatientDetailPageModule { } 

Você não precisa declarar nada em app.module.ts sobre PatientDetailPageModule app.module.ts PatientDetailPageModule remova todas as referências a ele.Se você precisar usar o módulo PatientDetailPageModule dentro de outro componente, basta import como abaixo.

another.module.ts

 @NgModule({ imports: [ PatientDetailPageModule, ], }) 

Use Cordova constrói :

 ionic cordova build android --prod