Próbuję zbudować aplikację ionic 2. Kiedy próbuję aplikację w przeglądarce z obsługą jonową lub uruchamiam ją na emulatorze, wszystko działa dobrze.
Ale kiedy próbuję to zbudować za każdym razem błąd
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
mój AppModule to
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 {}
a mój add-event.module.ts to
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 {}
Rozumiem, że muszę usunąć jedną z deklaracji, ale nie wiem jak.
Jeśli usunę deklarację z AppModule, pojawi się błąd, że strona logowania nie została znaleziona podczas uruchamiania usługi ionic
Niektóre osoby używające
Lazy loading
natkną się na tę stronę.Oto co zrobiłem, aby ustalić dzieląc się dyrektywę .
shared.module.ts
Następnie w module app.module i innych modułach
źródło
Rozwiązanie jest bardzo proste. Znajdź
*.module.ts
pliki i komentarze do deklaracji. W twoim przypadku znajdźaddevent.module.ts
plik i usuń / skomentuj jedną linię poniżej:To rozwiązanie działa w jonowej 3 dla stron, które generowane przez CLI-jonowego i działa w obu
ionic serve
iionic cordova build android --prod --release
poleceń!Bądź szczęśliwy...
źródło
W Angular 4. Ten błąd jest uważany za problem z pamięcią podręczną czasu wykonania usługi ng.
przypadek: 1 ten błąd wystąpi, po zaimportowaniu komponentu w jednym module i ponownym imporcie w podmodułach.
przypadek: 2 Zaimportuj jeden komponent w niewłaściwe miejsce i usuń i zastąp w odpowiednim module, tym razem rozważ problem z pamięcią podręczną. Musisz zatrzymać projekt i rozpocząć -ponownie służyć, będzie działać zgodnie z oczekiwaniami.
źródło
Jeśli twoje strony są tworzone za pomocą CLI, to tworzy plik o nazwie filename.module.ts, a następnie musisz zarejestrować nazwę pliku.module.ts w tablicy importów w pliku app.module.ts i nie wstawiać tej strony do tablicy deklaracji .
na przykład.
źródło
Ten moduł jest dodawany automatycznie po uruchomieniu polecenia ionic. Jednak nie jest to konieczne. Dlatego alternatywnym rozwiązaniem jest usunięcie add-event.module.ts z projektu.
źródło
Możesz po prostu wypróbować to rozwiązanie (dla Ionic 3)
W moim przypadku ten błąd występuje, gdy wywołuję stronę przy użyciu następującego kodu
Właśnie usunąłem cudzysłowy, takie jak poniższe, a także zaimportowałem tę stronę na górze pliku, którego użyłem, nazywając stronę logowania
W tej chwili nie mogę wyjaśnić różnicy, ponieważ jestem programistą na poziomie początkującym
źródło
Od wydania Ionic 3.6.0 każda strona wygenerowana przy użyciu Ionic-CLI jest teraz modułem Angular. Oznacza to, że musisz dodać moduł do importu w pliku
src/app/app.module.ts
źródło
Aby obejść ten błąd, powinieneś zacząć od usunięcia wszystkich importów pliku app.module.ts i mieć coś takiego:
Następnie edytuj moduł swoich stron, na przykład:
Następnie dodaj adnotację IonicPage przed adnotacją komponentu wszystkich stron:
Następnie zmień typ rootPage, aby był ciągiem i usuń importowanie stron (jeśli takie istnieją w składniku aplikacji)
Wtedy funkcja nawigacji powinna wyglądać następująco:
Źródło tego rozwiązania znajdziesz tutaj: Komponent jest częścią deklaracji 2 modułów
źródło
Rozwiązany - Komponent jest częścią deklaracji 2 modułów
I uruchom polecenie ionic cordova build android --prod --release its Working in my app
źródło
Miałem ten sam problem. Po prostu upewnij się, że usunąłeś każde wystąpienie modułu w „deklaracjach” oprócz AppModule.
Pracował dla mnie.
źródło
Prosta naprawa,
Przejdź do swojego
app.module.ts
pliku iremove/comment
wszystkiego, co się z nim wiążeadd_event
. Nie ma potrzeby dodawania komponentów doApp.module.t
s, które są generowane przez program,ionic cli
ponieważ tworzy osobny moduł dla komponentów tzwcomponents.module.ts
.Zawiera potrzebne importy komponentów modułu
źródło
Ponieważ błąd mówi, aby usunąć moduł AddEvent z katalogu głównego, jeśli twoja strona / komponent ma już plik modułu jonowego, jeśli nie tylko usunąć go z innej / podrzędnej strony / komponentu, na końcu strona / komponent powinien być obecny tylko w jednym pliku modułu importowane, jeśli mają być używane.
W szczególności należy dodać moduł główny, jeśli jest to wymagane na wielu stronach, a jeśli na określonych stronach, zachować go tylko na jednej stronie.
źródło
Przypadkowo utworzyłem własny komponent o tej samej nazwie co komponent biblioteki.
Kiedy użyłem mojego IDE do automatycznego importu biblioteki dla komponentu, wybrałem niewłaściwą bibliotekę.
Dlatego ten błąd narzekał, że ponownie deklarowałem komponent.
Naprawiłem, importując z kodu własnego komponentu zamiast z biblioteki.
Mogę również naprawić, używając innych nazw: unikaj niejednoznaczności.
źródło
W tym scenariuszu utwórz inny udostępniony moduł, importując cały komponent, który jest używany w wielu modułach.
We współdzielonym komponencie. zadeklaruj te komponenty. A następnie zaimportuj współdzielony moduł w appmodule, a także w innym module, do którego chcesz uzyskać dostęp. Będzie działać w 100%, zrobiłem to i sprawiłem, że działa.
źródło
Wystąpił ten sam błąd, ale odkryłem, że podczas
AddEventModule
importowaniaAddEvent
modułu nie można zaimportować modułu, ponieważ w tym przypadku wystąpiłby błąd.źródło