延迟加载时找不到模块

时间:2019-04-10 05:48:17

标签: angular

我想延迟加载我的组件。但有一个我无法解决的错误。

错误是:

  

core.js:15724错误错误:未捕获(承诺中):错误:找不到   模块'app / invoice-builder / invoice-builder.module'错误:找不到   模块'app / invoice-builder / invoice-builder.module'

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  {
    path: 'invoice-builder',
    loadChildren : 'app/invoice-builder/invoice-builder.module#InvoiceBuilderModule'
  },
  {
    path: '**',
    redirectTo: 'invoice-builder'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

app.module.ts

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

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { from } from 'rxjs';
import { MaterialModule } from './shared/material.module';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    MaterialModule

  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我不明白这里发生了什么。我尝试两次使用重新启动项目 npm start,但是没有用。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

问题可能是由于您定义路径的方式引起的。

摘自Lazy Loading Modules上的官方角度文档

  

请注意,延迟加载语法使用loadChildren,后跟一个字符串,该字符串是模块的相对路径,井号或#,以及模块的类名。

尝试将您的路径更新为:

loadChildren : './app/invoice-builder/invoice-builder.module#InvoiceBuilderModule'

或者根据您的文件结构,您可能不需要./app,在这种情况下您可以尝试

loadChildren : './invoice-builder/invoice-builder.module#InvoiceBuilderModule'

答案 1 :(得分:2)

在使用 Angular 9 时,我遇到了类似的问题,并通过使用found in docs:

的语法对其进行了修复
const routes: Routes = [
  {
    path: 'customers',
    loadChildren: () => import('./customers/customers.module').then(m => m.CustomersModule)
  },
  {
    path: 'orders',
    loadChildren: () => import('./orders/orders.module').then(m => m.OrdersModule)
  }
];

答案 2 :(得分:0)

更新LoadChieldren路径,如

/dev/pts

因为invoice-builder文件夹位于app文件夹内。 而且app-routing.module.ts也位于同一目录中,因此请更新模块的路径。