【问题标题】:Lazy loading Error: Cannot find module - Angular 7延迟加载错误:找不到模块 - Angular 7
【发布时间】:2021-01-05 20:12:24
【问题描述】:

我正在尝试在 Angular 7 上进行延迟加载,但出现以下错误

ERROR Error: Uncaught (in promise): Error: Cannot find module './admin/admin.module'
Error: Cannot find module './admin/admin.module'
    at $_lazy_route_resource lazy namespace object:5
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
    at Object.onInvoke (core.js:14191)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
    at zone.js:872
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14182)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873

我已经创建了 admin.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { AdminRoutingModule } from './admin.routing.module';
// imports de todos os components

@NgModule({
  declarations: [
    //all admin components
  ],
  imports: [
    CommonModule,
    RouterModule,
    AdminRoutingModule,
  ]
})
export class AdminModule { }

还有 admin.routing.module.ts

import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { RestrictedGuardService } from ".././restricted-guard.service";
//imports responsible for routes

const routes: Routes = [ { 
    {
        path: "usuario",
        component: AdminUsuariosComponent,
        canActivate: [RestrictedGuardService],
        data: { perfil: ["ROLE_ADMIN"] }
    },
    //all other paths
...

} ]

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

在 app-routing.module 我包含了相对路径

   {
        path: 'admin',
        loadChildren: './admin/admin.module#AdminModule',
        canActivate: [RestrictedGuardService],
        data: { perfil: ["ROLE_ADMIN"] }    
   },

我尝试检查我在 stackoverflow 上找到的其他一些解决方案,例如放置完整路径而不是相对路径。我试图删除“canActivate”和“数据”以查看它是否有效,但它没有

app.module.ts

import { APP_PROVIDERS } from "./app.providers";
import { BrowserModule } from "@angular/platform-browser";
import { NgModule, NO_ERRORS_SCHEMA, Injector } from "@angular/core";
import { HttpClient, HttpClientModule } from "@angular/common/http";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { CommonModule } from "@angular/common";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { NoopAnimationsModule } from "@angular/platform-browser/animations";
import { MatButtonModule, MatCheckboxModule, MatAutocompleteModule } from "@angular/material";
import { RouterModule, Router } from '@angular/router';
import { Http, XHRBackend, RequestOptions, HttpModule, JsonpModule} from "@angular/http";
import { AppRoutingModule } from "./app-routing.module";

//all libs

//all imports from components.ts (except admin components)

export function HttpLoaderFactory(httpClient: HttpClient) {
    return new TranslateHttpLoader(httpClient);
}

@NgModule({
    declarations: [
        // all components (except admin components)
   ], 
    imports: [
        BrowserModule,
        HttpModule,
        HttpClientModule,
        FormsModule,
        CommonModule,
        ReactiveFormsModule,
        InfiniteScrollModule,
        ModalModule,
        JsonpModule,
        FloatNumberPipeModule,
        MomentPipeModule,
        MomentTimePipeModule,
        TruncatePipeModule,
        SanitizerHtmlModule,
        NgxMaskModule.forRoot(),
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: HttpLoaderFactory,
                deps: [HttpClient]
            }
        }),
        NgProgressModule.forRoot(),
        NgProgressRouterModule.forRoot(),
        NgProgressHttpModule.forRoot(),
        NgbCollapseModule,
        NgbTooltipModule,
        CollapseModule.forRoot(),
        BrowserAnimationsModule,
        NoopAnimationsModule,
        MatButtonModule,
        MatCheckboxModule,
        MatAutocompleteModule,
        FilterTagPipeModule,
        NgCircleProgressModule.forRoot({}),
        LyCommonModule,
        LyThemeModule.setTheme("minima-light"),
        LyToolbarModule,
        LyResizingCroppingImageModule,
        LyButtonModule,
        LyIconButtonModule,
        LyIconModule,
        LyInputModule,
        DeviceDetectorModule.forRoot(),
        CKEditorModule,
        FontAwesomeModule,
        NgxPaginationModule,
        NgxSpinnerModule,
        RouterModule, 
        AppRoutingModule,
    ],
    providers: [
        APP_PROVIDERS,
        {
            provide: Http,
            useFactory: xReducer,
            deps: [XHRBackend, RequestOptions, Injector]
        },
        { provide: LY_THEME, useClass: MinimaLight, multi: true },
        { provide: LY_THEME, useClass: MinimaDark, multi: true }
    ],
    bootstrap: [AppComponent],
    schemas: [NO_ERRORS_SCHEMA]
})
export class AppModule {}

export function xReducer(
    xhrBackend: XHRBackend,
    requestOptions: RequestOptions,
    injector: Injector
) {
    return new InterceptedHttp(xhrBackend, requestOptions, injector);
}

【问题讨论】:

  • 您提供的代码中没有任何地方显示您正在导入blog.module。你在哪里导入blog.module。您打算如何使用它?
  • 糟糕,复制和粘贴错误。我在另一个模块(本例中的博客模块)上对其进行了测试,它给出了同样的错误。

标签: angular angular7 angular-module


【解决方案1】:

尝试使用新的模块导入语法:

loadChildren: () => import('./module/module.module').then(mod => mod.ModuleModule)

【讨论】:

  • 我试过了,但没用。我相信这种新语法来自 Angular 8 +。
  • 尝试迁移您的应用,性能和一些新功能会更好,版本 7 和 8 之间代码没有重大变化
  • 能否在此处添加您的 app.module.ts 文件。
猜你喜欢
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2020-01-24
  • 2017-09-03
相关资源
最近更新 更多