typescript - O LazyLoading está quebrado no Angular? ChunkLoadError: Falha ao carregar o chunk xxx
Tendo o seguinte no app-routing.module.ts da minha aplicação Angular 15:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthorizationGuard } from './core/authorization/authorization.guard';
import { LoginComponent } from './core/authorization/login/login.component';
import { RolesGuard } from './core/authorization/roles.guard';
import { ErrorComponent } from './error/error.component';
import { HomeComponent } from './home/home.component';
import { ProjectModule } from './project/project.module';
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
canActivate: [AuthorizationGuard]
},
{
path: 'projects',
loadChildren: () => ProjectModule, // import('./project/project.module').then(m => m.ProjectModule)
canActivate: [AuthorizationGuard]
},
{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule),
canActivate: [AuthorizationGuard, RolesGuard],
data: { roles: ['admin', 'admin-dsn'] }
},
{ path: 'login', component: LoginComponent },
{ path: 'error/:status', component: ErrorComponent },
{ path: '', redirectTo: 'projects', pathMatch: 'full' },
{ path: '**', redirectTo: 'error/404' }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Se eu entendi bem, o código comentado ativou o carregamento preguiçoso. Ao usar o código comentado, tive o seguinte erro:
app-routing.module.ts:18 ERRO Erro: Não capturado (na promessa): ChunkLoadError: Falha ao carregar o fragmento Client_app_project_project_module_ts. (faltando: http://localhost:4200/Client_app_project_project_module_ts.js) ChunkLoadError: Falha ao carregar o fragmento Client_app_project_project_module_ts. (faltando: http://localhost:4200/Client_app_project_project_module_ts.js) em webpack_require.f.j (carregamento de fragmento jsonp:27:1) em garantir fragmento:6:1
procurando problemas semelhantes no SO, como este, vejo que a solução proposta é recarregar a página quando tais erros aparecem...
Não tenho certeza se recarregar a página raramente quando erros arbitrários como este são capturados é uma ideia realmente boa. Alguém poderia explicar para que serve esse "lazy loading", ele está quebrado no Angular e, se sim, deveria ser consertado ou é um comportamento normal?
P.S.
Se eu restaurar o
loadChildren: () => import('./project/project.module').then(m => m.ProjectModule),
e comente todo o código project.competent deixando apenas a declaração em .ts
@Component({
selector: 'project',
templateUrl: './project.component.html',
styleUrls: ['./project.component.scss']
})
export class ProjectComponent {}
e reduzir o project.component.html para <p>project component</p> ainda obtém o mesmo erro de Chunk.