【问题标题】:Unable to add lazy loading in an Angular 5 + ASP.NET Core 2 app on production无法在生产环境中的 Angular 5 + ASP.NET Core 2 应用程序中添加延迟加载
【发布时间】:2018-05-31 20:13:03
【问题描述】:

我按照this 教程将延迟加载添加到我的应用程序。在本地服务器上一切正常,但是当我发布我的应用程序时,我得到错误模块找不到。我正在使用 Angular Compiler Plugin。这是我的 package.json "dependencies": { "@angular/animations": "^5.0.0", "@angular/cdk": "^5.0.0", "@angular/common": "^5.0.0", "@angular/compiler": "^5.0.0", "@angular/compiler-cli": "^5.0.0", "@angular/core": "^5.0.0", "@angular/forms": "^5.0.0", "@angular/http": "^5.0.0", "@angular/material": "^5.0.0", "@angular/material-moment-adapter": "^5.0.0", "@angular/platform-browser": "^5.0.0", "@angular/platform-browser-dynamic": "^5.0.0", "@angular/platform-server": "^5.0.0", "@angular/router": "^5.0.0", "@ngtools/webpack": "^1.9.0", "@types/webpack-env": "1.13.0", "angular-router-loader": "^0.8.0", "angular2-infinite-scroll": "^0.3.5", "angular2-template-loader": "0.6.2", "aspnet-prerendering": "^3.0.1", "aspnet-webpack": "^2.0.1", "awesome-typescript-loader": "3.2.1", "bootstrap": "^3.3.7", "bootstrap-select": "^1.12.4", "css": "2.2.1", "css-loader": "0.28.4", "es6-shim": "0.35.3", "event-source-polyfill": "0.0.9", "expose-loader": "0.7.3", "extract-text-webpack-plugin": "2.1.2", "file-loader": "0.11.2", "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", "html-loader": "0.4.5", "isomorphic-fetch": "2.2.1", "jquery": "^3.2.1", "json-loader": "0.5.4", "moment": "^2.19.4", "ng2-auto-complete": "^0.12.0", "ngx-bootstrap": "^1.9.3", "preboot": "4.5.2", "raw-loader": "0.5.1", "reflect-metadata": "0.1.10", "rxjs": "^5.5.2", "select2": "^4.0.4", "style-loader": "0.18.2", "to-string-loader": "1.1.5", "typescript": "2.4.2", "url-loader": "0.5.9", "webpack": "2.5.1", "webpack-hot-middleware": "2.18.2", "webpack-merge": "4.1.0", "zone.js": "0.8.12" }

我还尝试使用不同的方法加载我的组件,如下所示:

path: 'hero', loadChildren: () => {
    return Promise.resolve(require('./components/hero/hero.module')['HeroModule']);
} 

但随后我得到错误 对象类型的索引签名隐含地具有“任何”类型。

【问题讨论】:

    标签: angular webpack lazy-loading angular2-aot


    【解决方案1】:

    我创建了 4 个模块,它们都是在 Angular 中延迟加载的

    首先你必须从 app.module.ts 文件中删除你想要延迟加载的模块,这里是示例,我正在延迟加载 HomePage 模块

    app.module.ts

       import { NgModule} from '@angular/core';
    
    
    //modules
    
       import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
       import { BrowserModule } from '@angular/platform-browser';
    
    
    
      //routing modules
    
        import { AppRoutingModule } from './app-routing.module';
    
    
    
       @NgModule({
         declarations: [ ],
    
         imports: [
         BrowserModule,
         BrowserAnimationsModule,
         AppRoutingModule, ],
    
          bootstrap: [AppComponent] 
          })
         export class AppModule {}
    

    你要延迟加载的模块会在 app-routing-module 中

    app-routing-module.ts

    import { NgModule } from '@angular/core';
    import { Routes, RouterModule } from '@angular/router';
    
    
    
     const routes: Routes = [
     { path: "", component: LandingComponent },
    
     {
      path: "homepage",
      loadChildren: "./homepage/homepage.module#HomePageModule"
     },
    
     ];
    
     @NgModule({
        imports: [RouterModule.forRoot(routes)],
        exports: [RouterModule]
      })
     export class AppRoutingModule { }
    

    load children 是我们想要延迟加载应用程序中的任何模块时使用的属性,#HomePageModule 是我想要延迟加载的模块的名称

    为了检查模块是否被延迟加载,当你构建你的 Angular 应用程序时,它会给你这样的块

    chunk {homepage.module} homepage.module.chunk.js, 
    homepage.module.chunk.js.map () 6.41 kB  [rendered]
    chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 5.83 kB 
    [entry] [rendered]
    chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map 
    (polyfills) 215 kB [initial] [rendered]
    chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 177 kB 
    [initial] [rendered]
    chunk {vendor} vendor.bundle.js, vendor.bundle.js.map (vendor) 5.31 MB 
    [initial] [rendered]
    

    说明你的模块已经懒加载成功了

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 2018-06-14
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多