2017-09-11 11 views
2

を実行するとイオンが実行されます:ビルドに成功しました。しかし、私がを実行すると、イオンが実行されます:build --prod次のエラーメッセージが表示されます。ページは2つのモジュールの宣言の一部です:ionic build prodのエラー

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) 

私は同じモジュールを複数回ロードしていますことを理解し、しかし、それらを削除する方法を理解することができませんでした。あなたが宣言する必要はありませんモジュール内entryComponentなどの部品を使用している場合は

私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], 
}) 

患者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 { 

} 

答えて

0

ですそれはモジュール内にある。 app.module.tsdeclarationsからPatientDetailPageを削除してみてください。

だから私の意見では、これを行うための最善の方法は、あなたのPatientDetailModuleから出て、あなたのPatientDetailPageexport、アプリモジュールにPatientDetailModuleをインポートすることです。

アプリケーションモジュール

@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], 
}) 

患者モジュールは

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 { 

} 
+0

私がPatienctDetailPageを削除した場合、私のブラウザでは空白のページしか見ることができません。 – vjnan369

+0

答えを更新しました。私の意見では、あなたのPatientDetailModuleをあなたのApp Moduleにインポートし、PatientDetailPageコンポーネントをエクスポートすることが最善の方法です。 – joshrathke

0

あなたは、あなたがする必要があるit.Ifへのすべての参照を削除する.so app.module.tsについてPatientDetailPageModuleに何かを宣言する必要はありません別のコンポーネント内にPatientDetailPageModuleモジュールを使用し、次にimportのようにしてください。

another.module.ts

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

使用Cordova builds

ionic cordova build android --prod 
3

これは角の基本的なエラーです。あなたは問題hereを見ることができます。だから答えはが今までを受け入れていますuse share moduleです。あなたはこのように行うことができます:
- この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 {} 


Importdeclarationexportあなたのコンポーネント - - share.module.ts
を作成するには、イオンページでコンポーネントを使用する場合(遅延ロードページ)、そのイオンページのモジュール内にインポートする共有モジュール:

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


- 他のコンポーネントでコンポーネントを使用する場合や、遅延ロードなしの場合ページ、上記のようにのapp.module.tsに共有モジュールをインポートしてください。
詳細を表示ngModule

関連する問題