Componente es parte de la declaración de 2 módulos


Intento construir una aplicación ionic 2. Cuando pruebo la aplicación en el navegador con ionic serve o la lanzo en un emulador, todo funciona bien.

Pero cuando intento construirlo cada vez que el error

ionic-app-script tast: "build"
Error Type AddEvent in "PATH"/add.event.ts is part of the declarations of 2 modules: AppModule in "PATH"/app.modules.ts and AddEvent in "PATH"/add-event.module.ts.
Please consider moving AddEvent in "PATH"/add-event.ts to a higher module that imports AppModule in "PATH"/app.module.ts and AddEventModule.
You can also creat a new NgModule that exports and includes AddEvent then import that NgModule in AppModule and AddEventModule

Mi AppModule es

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { AngularFireModule } from 'angularfire2';
import { MyApp } from './app.component';
import { Eventdata } from '../providers/eventdata';
import { AuthProvider } from '../providers/auth-provider';
import { HttpModule } from '@angular/http';

import { HomePage } from '../pages/home/home';
import { Login } from '../pages/login/login';
import { Register } from '../pages/register/register';
import { AddEvent } from '../pages/add-event/add-event';
import { EventDetails } from '../pages/event-details/event-details';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';


@NgModule({
  declarations: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails

  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpModule,
    AngularFireModule.initializeApp(config)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}, Eventdata, AuthProvider
  ]
})
export class AppModule {}

Y mi add-event.módulo.ts es

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { AddEvent } from './add-event';

@NgModule({
  declarations: [
    AddEvent,
  ],
  imports: [
    IonicPageModule.forChild(AddEvent),
  ],
  exports: [
    AddEvent
  ]
})
export class AddEventModule {}

Entiendo que tengo que quitar una de las declaraciones, pero no sé cómo.

Si elimino la declaración de AppModule, recibo un error que indica que la página de inicio de sesión no se encuentra, mientras que ejecutar ionic serve

Author: Jacob Stamm, 2017-04-25

14 answers

Elimine la declaración de AppModule, pero actualice la configuración de AppModule para importar su AddEventModule.

.....
import { AddEventModule } from './add-event.module';  // <-- don't forget to import the AddEventModule class

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    Login,
    Register,
    //AddEvent,  <--- remove this
    EventDetails

  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpModule,
    AngularFireModule.initializeApp(config),
    AddEventModule,  // <--- add this import here
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}, Eventdata, AuthProvider
  ]
})
export class AppModule {}

También,

Tenga en cuenta que es importante que su AddEventModule exporte el componente addEvent si desea usarlo fuera de ese módulo. Afortunadamente, ya lo tienes configurado, pero si se omitió, habrías recibido un error si intentaras usar el componente addEvent en otro componente de tu AppModule

 100
Author: snorkpete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-06 23:16:50

La solución es muy simple. Buscar archivos *.module.ts y declaraciones de comentarios. En su caso, busque addevent.module.ts archivo y elimine / comente una línea a continuación:

@NgModule({
  declarations: [
    // AddEvent, <-- Comment or Remove This Line
  ],
  imports: [
    IonicPageModule.forChild(AddEvent),
  ],
})

Esta solución funcionó en ionic 3 para páginas generadas por ionic-cli y funciona en ambos comandos ionic serve y ionic cordova build android --prod --release!

Sé feliz...

 12
Author: EmRa228,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-22 15:23:08

Algunas personas que usan Lazy loading van a tropezar con esta página.

Esto es lo que hice para arreglar compartir una directiva.

  1. crear un nuevo módulo compartido

Compartido.módulo.ts

import { NgModule, Directive,OnInit, EventEmitter, Output, OnDestroy, Input,ElementRef,Renderer } from '@angular/core';
import { CommonModule } from '@angular/common';

import { SortDirective } from './sort-directive';

@NgModule({
  imports: [
  ],
  declarations: [
  SortDirective
  ],
  exports: [
    SortDirective
  ]
})

export class SharedModule { }

Entonces en app.módulo y el otro módulo(s)

import {SharedModule} from '../directives/shared.module'
...

@NgModule({
   imports: [
       SharedModule
       ....
       ....
 ]
})
export class WhateverModule { }
 6
Author: Tom Stickel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-20 06:04:34

Si sus páginas se crean usando CLI, entonces crea un archivo con nombre de archivo.módulo.ts entonces tienes que registrar tu nombre de archivo .módulo.ts en la matriz de importaciones en la aplicación.módulo.ts file y no inserte esa página en la matriz de declaraciones.

Eg.

import { LoginPageModule } from '../login/login.module';


declarations: [
    MyApp,
    LoginPageModule,// remove this and add it below array i.e. imports
],

imports: [
        BrowserModule,
        HttpModule,
        IonicModule.forRoot(MyApp, {
           scrollPadding: false,
           scrollAssist: true,
           autoFocusAssist: false,
           tabsHideOnSubPages:false
        }),
       LoginPageModule,
],
 5
Author: Sandeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 11:36:28

EN Angular 4. Este error se considera un problema de caché de tiempo de ejecución de ng serve.

Caso:1 este error se producirá, una vez que importe el componente en un módulo y de nuevo se producirá la importación en módulos secundarios.

Caso:2 Importar un componente en el lugar equivocado y eliminado y reemplazado en el módulo Correcto, Que el tiempo se considera como ng servir problema de caché. Necesidad de detener el proyecto y empezar-hacer de nuevo ng servir, Funcionará como se esperaba.

 3
Author: gnganpath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-13 07:21:19

Puede probar esta solución (para Ionic 3 )

En mi caso, este error ocurre cuando llamo a una página utilizando el siguiente código

 this.navCtrl.push("Login"); // Bug

Acabo de eliminar las comillas como las siguientes y también importé esa página en la parte superior del archivo que usé llamar a la página de inicio de sesión

Esto.navCtrl.push (Login); / / Correct

No puedo explicar la diferencia en este momento ya que soy un desarrollador de nivel principiante

 3
Author: sijo vijayan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-20 14:48:28

Este módulo se añade automáticamente cuando se ejecuta el comando ionic. Sin embargo, no es necesario. Así que una solución alternativa es eliminar add-event.módulo.ts del proyecto.

 1
Author: Jaime Yule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-17 18:43:22

Desde el Jónico 3.6.0 liberar cada página generada usando Ionic-CLI es ahora un módulo Angular. Esto significa que debe agregar el módulo a sus importaciones en el archivo src/app/app.module.ts

import { BrowserModule } from "@angular/platform-browser";
import { ErrorHandler, NgModule } from "@angular/core";
import { IonicApp, IonicErrorHandler, IonicModule } from "ionic-angular";
import { SplashScreen } from "@ionic-native/splash-screen";
import { StatusBar } from "@ionic-native/status-bar";;

import { MyApp } from "./app.component";
import { HomePage } from "../pages/home/home"; // import the page
import {HomePageModule} from "../pages/home/home.module"; // import the module

@NgModule({
  declarations: [
    MyApp,
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HomePageModule // declare the module
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage, // declare the page
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: ErrorHandler, useClass: IonicErrorHandler },
  ]
})
export class AppModule {}
 1
Author: 0x1ad2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-16 10:32:46

Para superar este error , debe comenzar eliminando todas las importaciones de app.módulo.t y tienen algo como esto:

            import { BrowserModule } from '@angular/platform-browser';
            import { HttpClientModule } from '@angular/common/http';
            import { ErrorHandler, NgModule } from '@angular/core';
            import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
            import { SplashScreen } from '@ionic-native/splash-screen';
            import { StatusBar } from '@ionic-native/status-bar';

            import { MyApp } from './app.component';


            @NgModule({
              declarations: [
                MyApp
              ],
              imports: [
                BrowserModule,
                HttpClientModule,
                IonicModule.forRoot(MyApp)
              ],
              bootstrap: [IonicApp],
              entryComponents: [
                MyApp
              ],
              providers: [
                StatusBar,
                SplashScreen,
                {provide: ErrorHandler, useClass: IonicErrorHandler}
              ]
            })
            export class AppModule {}

Luego edita tu módulo pages, así :

            import { NgModule } from '@angular/core';
            import { IonicPageModule } from 'ionic-angular';
            import { HomePage } from './home';

            @NgModule({
              declarations: [
                HomePage,
              ],
              imports: [
                IonicPageModule.forChild(HomePage),
              ],
              entryComponents: [HomePage]
            })
            export class HomePageModule {}

Luego agregue la anotación de IonicPage antes de la anotación de componentes de todas las páginas :

import { IonicPage } from 'ionic-angular';

@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

Luego edita tu tipo de RootPage para que sea una cadena y elimina las importaciones de páginas (si hay alguna en el componente de tu app )

rootPage: string = 'HomePage';

Entonces la función de navegación debería ser así :

 /**
* Allow navigation to the HomePage for creating a new entry
*
* @public
* @method viewHome
* @return {None}
*/
 viewHome() : void
 {
  this.navCtrl.push('HomePage');
 }

Puede encontrar la fuente de esta solución aquí: El componente es parte de la declaración de 2 módulos

 0
Author: Ouahib Abdallah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 11:42:40

Solución simple,

Vaya a su archivo app.module.ts y remove/comment todo lo que se une con add_event. No hay necesidad de agregar componentes a los App.module.ts que son generados por el ionic cli porque crea un módulo separado para los componentes llamado components.module.ts.

Tiene las importaciones de componentes de módulo necesarias

 0
Author: Kavinda Jayakody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-03 05:48:25

Solucionado Component Componente es parte de la declaración de 2 módulos

  1. Elimina el nombre de página.módulo.archivo ts en la aplicación
  2. Remove import { IonicApp} from 'ionic-angular'; in pagename.ts file
  3. Elimina @IonicPage() de pagename.ts file

Y Ejecute el comando ionic cordova build android pro prod release release su trabajo en mi aplicación

 0
Author: Divya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-16 09:58:32

Tenía el mismo problema. Simplemente haga eliminar cada aparición de módulo en" declaraciones", pero AppModule.

Funcionó para mí.

 0
Author: David Vareka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-23 17:52:35

Como dice el error para eliminar el módulo addEvent de la raíz si su Página/Componente ya tiene un archivo de módulo ionic si no solo lo elimina de la otra página/componente hijo, al final la página/componente debe estar presente en un solo archivo de módulo importado si se va a usar.

Específicamente, debe agregar en el módulo raíz si es necesario en varias páginas y si en páginas específicas mantenerlo en una sola página.

 0
Author: kuldeep kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-07 08:51:12

Tuve el mismo error pero descubrí que cuando importas un AddEventModule, no puedes importar un módulo AddEvent ya que presentaría un error en este caso.

 -3
Author: user8470307,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-16 06:23:39