10

我在 Mac 环境下成功完成了一个 Angular 项目

Angular CLI: 7.0.5
Node: 8.11.3
OS: darwin x64
Angular: 7.0.3

现在我在 ubuntu 18.04 上运行相同的代码

Angular CLI: 7.3.9
Node: 12.9.1
OS: linux x64
Angular: 7.2.15

但是,当尝试延迟加载另一个模块时,它会出现一个非常奇怪的问题,我不断收到此错误错误:找不到模块“app/website/site.module”

这是我的项目结构

在此处输入图像描述

和 app-routing.module.ts

 const routes: Routes = [    
      {
        path: 'site',
        loadChildren: 'app/website/site.module#SiteModule',
      }
    ]

该路由用于在mac中工作但在ubuntu中失败

我查找了不同的解决方案

const rootRoutes: Routes = [
  { path: 'site', loadChildren: './website/site.module#SiteModule' }
];

但它仍然无法正常工作。

4

4 回答 4

16

我在stackblitz上创建了一个示例项目

解释:

所以首先,你必须像这样创建你的路线:

const routes: Routes = [
  // this will get lazy loaded
  { 
    path: 'lazyload',
    loadChildren: () => import('./module/module.module').then(mod => mod.ModuleModule) 
  },

  // default route
  { 
    path: '**',
    component: Component1Component
  }
];

然后将其添加到应用程序模块(根模块):

@NgModule({
  imports:      [
    // your imports here ...
    // add your routes (forRoot() is only in the root module!)
    RouterModule.forRoot(routes)
  ],
  // your providers, declarations, etc.
})
export class AppModule { }

然后您必须向子模块添加路由(在本例中为 ModuleModule):

const routes: Routes = [
  { path: 'route1', component: Component2Component },
  { path: '', component: Component3Component }
];

@NgModule({
  imports: [
    // your imports here ... 
    RouterModule.forChild(routes)
  ],
  declarations: [Component2Component, Component3Component]
})
export class ModuleModule { }

现在它应该可以工作了,如果你有任何问题我会在这里:)

于 2019-09-03T17:19:23.977 回答
9

我遇到了类似的问题,在我的代码中,它与您的路径相同

  {
      path: 'admin', loadChildren: './admin/admin.module#AdminModule'
  }

在我更改文件 tsconfig.app.json 之后

它开始工作并找到子路线,在附图上你可以看到我所做的更改

在此处输入图像描述

于 2020-03-01T05:47:20.680 回答
3

在我的特殊情况下,Pavel B. 解决方案效果最好。在编译或运行时没有警告!

  {
    path: 'users',
    loadChildren: () => import('./users/users.module').then(mod => mod.UsersModule)
  }

使用:

Angular CLI:9.1.7 节点:12.14.0 操作系统:darwin x64

Angular:9.1.9 ...动画、通用、编译器、编译器-cli、核心、表单...平台浏览器、平台浏览器动态、路由器常春藤工作区:是

包和版本

@angular-devkit/architect         0.901.7
@angular-devkit/build-angular     0.901.7
@angular-devkit/build-optimizer   0.901.7
@angular-devkit/build-webpack     0.901.7
@angular-devkit/core              9.1.7
@angular-devkit/schematics        9.1.7
@angular/cli                      9.1.7
@ngtools/webpack                  9.1.7
@schematics/angular               9.1.7
@schematics/update                0.901.7
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0
于 2020-05-27T08:15:03.667 回答
0

你可以这样使用:

const rootRoutes: Routes = [ { path: 'site', loadChildren: () => SiteModule } ];

于 2020-07-13T22:43:46.193 回答