【问题标题】:ERROR in No NgModule metadata found for 'HomeModule'找不到“HomeModule”的 NgModule 元数据中的错误
【发布时间】:2019-06-27 15:09:04
【问题描述】:

我在运行 Ionic CLI 命令ionic cordova run android 时收到标题中提到的错误。

我试图解决的问题:

检查main.ts 文件是否包含以下代码

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));

删除node_modules 文件夹并运行npm install

使用in this answer 发布的命令重新安装 angular/cli。

app.module.ts:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { HttpClientModule } from '@angular/common/http';
import { SijaintiService } from '../app/sijainti.service';
import { RouterModule, Routes } from '@angular/router';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicModule.forRoot(), 
    AppRoutingModule, 
    HttpClientModule,
    RouterModule.forRoot([
      { path: '', redirectTo: '/home', pathMatch: 'full' },
      { path: 'home', loadChildren: './home/home.module#HomeModule' },
      { path: 'tiedot', loadChildren: './tiedot/tiedot.module#TiedotModule' }
    ])
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
    SijaintiService
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

home.module.ts:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';

import { HomePage } from './home.page';

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    IonicModule,
    RouterModule.forChild([
      {
        path: '',
        component: HomePage
      }
    ])
  ],
  declarations: [HomePage]
})
export class HomePageModule {}

【问题讨论】:

  • 您能在此处添加您的 AppModule 和 HomeModule 代码吗?或者您可以在stackblitz.com 创建一个项目并分享链接。
  • 我在问题中添加了代码片段。

标签: angular ionic-framework ionic4


【解决方案1】:

您将模块命名为HomePageModule,错误是HomeModule 未定义。可能是笔误?

您可以将导出重命名为

export class HomeModule {}

或者将延迟加载的模块修改为

{ path: 'home', loadChildren: './home/home.module#HomePageModule' }, // from HomeModule

【讨论】:

    【解决方案2】:

    将路由列表中的 HomeModule 更改为 HomePageModule,因为您的类名为 HomePageModule。

    改变这个,

     { path: 'home', loadChildren: './home/home.module#HomeModule' },
    

    到这里,

     { path: 'home', loadChildren: './home/home.module#HomePageModule' },
    

    【讨论】:

    • 我在这里为 ionic 4 创建了一个项目,stackblitz.com/edit/angular-ionic-4,请 fork 项目,添加您的代码并分享链接。
    • 您的项目中没有路由器问题,问题似乎出在谷歌原生插件中。如果您使用的是旧插件版本,请考虑使用 ionic 4 的最新版本。我在这里复制了相同的代码并注释掉了 loadmap 函数 stackblitz.com/edit/angular-ionic-4-4sglyn 。正如我所说,该项目中没有路由器问题。
    • 我在 Ionic 4 中使用 @ionic-native/google-maps 5.0.0.beta.26,但插件不起作用。关于如何让地图在 Ionic 4 中工作还有其他替代方法吗?还是我需要降级?
    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2018-05-09
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多