Page is part of the declarations of 2 modules: Error in ionic build prod

后端 未结 3 1358
生来不讨喜
生来不讨喜 2020-11-27 23:04

When I run npm run ionic:build I am able to build successfully. But When I run npm run ionic:build --prod I am getting following error mess

相关标签:
3条回答
  • 2020-11-27 23:26

    You don't need to declare anything on app.module.ts about PatientDetailPageModule.So remove all references to it.If you need to use PatientDetailPageModule module inside another component then just import like below.

    another.module.ts

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

    Use Cordova builds:

    ionic cordova build android --prod
    
    0 讨论(0)
  • 2020-11-27 23:31

    If you are using a component as an entryComponent within a module you do not need to declare it within the Module. Try removing PatientDetailPage from the declarations on your app.module.ts.

    So the best way to do this in my opinion is to export your PatientDetailPage out from your PatientDetailModule and import the PatientDetailModule into your App Module.

    App Module

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

    Patient Module

    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 讨论(0)
  • 2020-11-27 23:38

    This is a basic error of angular. You can see the issue here. So the answer that is accepted till now is use share module. You can do like this:
    - Create a share.module.ts
    - Import, declaration and export your component in this 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 {}
    


    - If you want to use your component in a Ionic Page(lazy load page), import share module in the module of that Ionic page:

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


    - If you want to use your component in other component or no lazy load page, import share module in your app.module.ts like above.
    See more about ngModule

    0 讨论(0)
提交回复
热议问题