无法在X.ts中确定X类的模块!将X添加到NgModule以修复ionic2

时间:2017-09-20 16:51:38

标签: angular ionic2 ionic3 ionic2-providers

当我尝试使用以下命令构建应用程序时,我遇到了一个问题:

ionic cordova run android --prod --release

如果我运行以下命令,一切运行正常:

ionic cordova run android

我得到的错误是:

  

错误:无法确定CartItemsPage类的模块   C:/test/src/pages/cart/cart-items.ts!将CartItemsPage添加到   NgModule来解决它。无法确定类ItemsPage中的模块   C:/test/src/pages/items/items.ts!将ItemsPage添加到NgModule中   修理它。无法确定UserHomePage类的模块   C:/test/src/pages/user-home/user-home.ts!将用户主页添加到   NgModule来解决它。无法确定类的模块   C:/ test / src / pages / forgot-password / forgot-pas中的ForgotPasswordPage   sword.ts!将ForgotPasswordPage添加到NgModule以修复它。不能   确定类LoginPage的模块   C:/test/src/pages/login/login.ts!将LoginPage添加到NgModule中   修理它。无法确定类SignupPage的模块   C:/test/src/pages/signup/signup.ts!将NgModule添加到的注册页面   修理它。无法确定欢迎页面类的模块   C:/test/src/pages/welcome/welcome.ts!将WelcomePa ge添加到NgModule   要解决这个问题。无法确定PincodePage类的模块   C:/test/src/pages/pincode/pincode.ts!将PincodePa ge添加到NgModule   要解决这个问题。无法确定AppHomePage类的模块   C:/test/src/pages/app-home/app-home.ts!将AppHome页面添加到   NgModule来解决它。无法确定类ProfilePage的模块   在C:/test/src/pages/profile/profile.ts!将ProfilePa ge添加到   NgModule来解决它。无法确定类的模块   C中的OrderDetailPage:/test/src/pages/myorders/order-detail.ts!加   OrderDetailPage到NgModule来修复它。无法确定模块   对于C:/test/src/pages/myorders/myorders.ts中的MyOrdersPage类!加   MyOrde rsPage到NgModule来修复它。无法确定模块   对于C:/test/src/pages/logout/logout.ts中的LogoutPage类!加   LogoutPage到NgModule来修复它。无法确定模块   在C:/test/src/app/app.component.ts中的MyApp类!将MyApp添加到   NgModu le来解决它。无法确定类的模块   在C:/test/src/utils/pipes/RemoveUnderscore.t中删除UndercorePipe!   将RemoveUnderscorePipe添加到NgModule以修复它。

但我已将我的所有页面和管道添加到app.module.ts,如下所示:

// Imports

// The translate loader needs to know where to load i18n files
// in Ionic's static asset pipeline.
export function HttpLoaderFactory(http: Http) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}


let pages:any = [
  MyApp,
  LoginPage,
  UserHomePage,
  SignupPage,
  AppHomePage,
  WelcomePage,
  ItemsPage,
  CartItemsPage,
  ProfilePage,
  MyOrdersPage,
  OrderDetailPage,
  ForgotPasswordPage,
  PincodePage,
  LogoutPage
];

let pipes = [RemoveUnderscorePipe];

export function declarations() {
  return pages.concat(pipes);
}

export function entryComponents() {
  return pages;
}

export function providers() {
  return [
    Api,
    ItemsService,
    UserService,
    ToastService,
    CartService,
    OrdersService,
    TokenService,
    Camera,
    GoogleMaps,
    SplashScreen,
    StatusBar,

    // Keep this to enable Ionic's runtime error handling during development
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ];
}


@NgModule({
  declarations: declarations(),
  imports: [
    BrowserModule,
    HttpModule,
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [Http]
      }
    }),
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ],
  bootstrap: [IonicApp],
  entryComponents: entryComponents(),
  providers: providers()
})
export class AppModule {
}

如果你看到我的app.module.ts,我已经为entrycomponents和声明添加了组件和管道。生产标志有什么我遗漏的吗? 我该如何解决这个问题?

5 个答案:

答案 0 :(得分:5)

这也可能是文件名大小写问题。参见https://github.com/angular/angular-cli/issues/10732

答案 1 :(得分:1)

将声明更改为下面的页面并且有效。

declarations: pages

我得到了答案:https://forum.ionicframework.com/t/error-while-running-the-ionic3-app-in-production-mode/106294

答案 2 :(得分:0)

详细说明@ [Thom Kiesewetter]的答案

它也可能是模块路线或其他任何地方

中使用的路径框问题参考

例如路径为

  

从“ ./ E 实体/employee.component”中导入{EmployeeComponent};

代替

  

从“ ./entities/employee.component”中导入{EmployeeComponent};

真实路径是“ e 实体”而不是“ E 实体”

答案 3 :(得分:0)

我遇到了同样的问题,但对我来说,两个名称相同的组件出现在下面,

my-first-app \ src \ app \ header \ header.component.ts

my-first-app \ src \ header \ header.component.ts

第二个未使用且放置错误,因为我的所有代码都只在my-first-app \ src \ app内部。我删除了第二个,它解决了我的问题。

答案 4 :(得分:0)

我遇到了同样的问题,但对我来说,两个名称相似的组件带有额外的“s”,

RigDetailsInfoComponent

RigDetailInfoComponent

我们在这里可以清楚地看到第一个组件名称我有details和第二个组件名称detail,但angular仍然无法区分这两者。

我通过将组件名称之一更改为 RigGeneralInfoComponent

解决了这个问题