Я пытаюсь создать приложение ionic 2. Когда я пробую приложение в браузере с помощью ionic serve или запускаю его на эмуляторе, все работает нормально.
Но когда я пытаюсь его построить, каждый раз появляется ошибка
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
мой AppModule
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 {}
и мой add-event.module.ts
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 {}
Я понимаю, что мне нужно удалить одно из объявлений, но не знаю как.
Если я удалю объявление из AppModule, я получаю сообщение об ошибке, что страница входа не найдена во время работы ionic serve
Некоторые люди, использующие,
Lazy loading
могут наткнуться на эту страницу.Вот что я сделал, чтобы исправить директиву совместного использования .
shared.module.ts
Затем в app.module и других ваших модулях
источник
Решение очень простое. найти
*.module.ts
файлы и комментарии к объявлениям. В вашем случае найдитеaddevent.module.ts
файл и удалите / прокомментируйте одну строку ниже:Это решение работает в ионном 3 для страниц , которые генерируются ионно-кли и работает в обоих
ionic serve
иionic cordova build android --prod --release
командах!Будь счастлив...
источник
IN Angular 4. Эта ошибка рассматривается как проблема с кешем времени выполнения ng serve.
case: 1 эта ошибка возникнет, если вы импортируете компонент в один модуль и снова произойдете импорт в подмодули.
case: 2 Импортируйте один компонент в неправильное место и удалите и замените его в правильном модуле, на этот раз он считает проблему с кешем ng serve. Необходимо Остановить проект и запустить -do again ng serve, он будет работать должным образом.
источник
Если ваши страницы созданы с помощью CLI, тогда он создает файл с именем filename.module.ts, тогда вам необходимо зарегистрировать свое имя файла.module.ts файла.module.ts в массиве импорта в файле app.module.ts и не вставлять эту страницу в массив объявлений. ,
например.
источник
Этот модуль добавляется автоматически при запуске команды ionic. Однако это не обязательно. Таким образом, альтернативным решением является удаление add-event.module.ts из проекта.
источник
Вы можете просто попробовать это решение (для Ionic 3)
В моем случае эта ошибка возникает, когда я вызываю страницу с помощью следующего кода
Я просто удалил цитаты, подобные приведенным ниже, а также импортировал эту страницу в верхнюю часть файла, который я использовал, вызывая страницу входа в систему
Я не могу объяснить разницу в настоящее время, так как я разработчик начального уровня
источник
Начиная с выпуска Ionic 3.6.0 каждая страница, созданная с использованием Ionic-CLI, теперь является модулем Angular. Это означает, что вы должны добавить модуль в свой импорт в файле
src/app/app.module.ts
источник
Чтобы обойти эту ошибку, вы должны начать с удаления всего импорта app.module.ts и получить что-то вроде этого:
Затем отредактируйте модуль страниц, например:
Затем добавьте аннотацию IonicPage перед компонентной аннотацией всех страниц:
Затем измените тип rootPage на строку и удалите импорт страниц (если они есть в вашем компоненте приложения)
Тогда функция навигации должна быть такой:
Вы можете найти источник этого решения здесь: Компонент является частью объявления 2 модулей
источник
Решено - Компонент является частью объявления 2 модулей
И запустите команду ionic cordova build android --prod --release. Работает в моем приложении.
источник
Была такая же проблема. Просто убедитесь, что вы удалили все вхождения модуля в «объявлениях», кроме AppModule.
Работал у меня.
источник
Простое исправление,
Зайдите в свой
app.module.ts
файл иremove/comment
все, что с ним связываетadd_event
. Нет необходимости добавлять компоненты вApp.module.t
s, которые генерируются с помощью,ionic cli
потому что он создает отдельный модуль для компонентов, называемыхcomponents.module.ts
.Он имеет необходимый импорт компонентов модуля
источник
Поскольку ошибка говорит об удалении модуля AddEvent из корня, если ваша страница / компонент уже имеет файл ионного модуля, если не просто удалить его с другой / дочерней страницы / компонента, на конечной странице / компоненте должен присутствовать только один файл модуля импортированный, если будет использоваться.
В частности, вы должны добавить корневой модуль, если он требуется на нескольких страницах, и если на определенных страницах, сохраните его только на одной странице.
источник
Я случайно создал свой собственный компонент с тем же именем, что и компонент библиотеки.
Когда я использовал свою IDE для автоматического импорта библиотеки для компонента, я выбрал не ту библиотеку.
Поэтому эта ошибка жаловалась, что я повторно объявлял компонент.
Я исправил, импортировав из собственного кода компонента, а не из библиотеки.
Я мог бы также исправить это, назвав по-другому: избегайте двусмысленности.
источник
В этом сценарии создайте еще один общий модуль в этом импорте всего компонента, который используется в нескольких модулях.
В общем компоненте. объявить эти компоненты. А затем импортируйте общий модуль в appmodule, а также в другой модуль, к которому вы хотите получить доступ. Он будет работать на 100%, я сделал это, и он заработал.
источник
У меня была такая же ошибка, но я обнаружил, что когда вы импортируете
AddEventModule
, вы не можете импортироватьAddEvent
модуль, так как в этом случае он представит ошибку.источник