Lazy load Angular 5 error: $$ _ lazy_route_resource ленивый рекурсивный
Я использую компиляцию angular cli AoT.
Когда я пытаюсь создать ленивый компонент загрузки после этого учебника, я получил следующую ошибку:
ERROR Error: Uncaught (in promise): TypeError: __webpack_require__.e is not a function
TypeError: __webpack_require__.e is not a function
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:13), <anonymous>:15:29)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6554)
at SystemJsNgModuleLoader.load (core.js:6538)
at RouterConfigLoader.loadModuleFactory (router.js:4543)
at RouterConfigLoader.load (router.js:4523)
at MergeMapSubscriber.eval [as project] (router.js:2015)
at MergeMapSubscriber._tryNext (mergeMap.js:128)
at MergeMapSubscriber._next (mergeMap.js:118)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)
at ScalarObservable._subscribe (ScalarObservable.js:51)
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:13), <anonymous>:15:29)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6554)
at SystemJsNgModuleLoader.load (core.js:6538)
at RouterConfigLoader.loadModuleFactory (router.js:4543)
at RouterConfigLoader.load (router.js:4523)
at MergeMapSubscriber.eval [as project] (router.js:2015)
at MergeMapSubscriber._tryNext (mergeMap.js:128)
at MergeMapSubscriber._next (mergeMap.js:118)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)
at ScalarObservable._subscribe (ScalarObservable.js:51)
at resolvePromise (zone.js:809)
at resolvePromise (zone.js:775)
at eval (zone.js:858)
at ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4736)
at ZoneDelegate.invokeTask (zone.js:420)
at Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
at ZoneTask.invokeTask [as invoke] (zone.js:500)
at invokeTask (zone.js:1517)
Вот часть моих кодов:
приложение-routing.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: 'listes', loadChildren: 'app/component/list/list.module#ListModule'}
];
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
declarations: [],
exports: [ RouterModule ]
})
export class AppRoutingModule { }
список-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ListComponent } from './list.component';
const routes: Routes = [] = [
{ path: '', component: ListComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class ListRoutingModule { }
list.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ListRoutingModule } from './list-routing.module';
import { ListComponent } from './list.component';
@NgModule({
imports: [
CommonModule,
ListRoutingModule
],
declarations: [ ListComponent ]
})
export class ListModule { }
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HeaderComponent } from './component/header/header.component';
import { FooterComponent } from './component/footer/footer.component';
import { AppRoutingModule } from './app-routing.module';
import { DetailModule } from './component/detail/detail.module';
import { HomeComponent } from './component/home/home.component';
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
FooterComponent,
HomeComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
Я уже сообщаю об этом как Angular -cli Issue. Вы можете найти здесь здесь.
Есть ли у кого-то, кто столкнулся с одной проблемой и нашел решение для этого?
Связанная ошибка: Angular 5 с angular cli не-ленивые модули загрузки в маршрутизаторе(Еще не решен).
Предлагаемое решение: https://github.com/gdi2290/angular-starter/issues/1936:
{ path: 'listes', loadChildren: () => ListModule }
// it doesn't do lazy loading
Важная информация:
Angular cli: 1.7.0
Angular: 5.2.0
Мои приветствия
Ответы
Ответ 1
Я клонировал и воспроизвел проблему, используя ваш размещенный код GitHub. Чтобы исправить это, ваши глобальные и @devual-зависимые пакеты @angular/cli должны быть в 1.7.2
npm remove -g @angular/cli
npm install -g @angular/[email protected]
npm remove @angular/cli
npm add @angular/[email protected] --save-dev
Теперь пакет @angular/cli в ваших devDependances соответствует глобальной версии, и он установлен на 1.7.2, где эта проблема решена.
Ответ 2
У меня такая же проблема. Я решаю его. Просто остановите сервер cli и запустите его. Ошибка прошла, если вы правильно выполнили свой код.
Ответ 3
На angular -cli есть открытая ошибка: 1.7.x: https://github.com/angular/angular-cli/issues/9488#issuecomment-368871510
Переход на 1.6.8 для решения проблемы.
Ответ 4
У меня такая же проблема. Исправьте его, используя
{path:'listes' ,loadChildren: ()=>ListModule} not {path:'listes' ,loadChildren: 'app/component/list/list.module#ListModule'}
Ответ 5
См. Этот комментарий к ошибке 1.7.x. Кажется, проблема заключается в том, чтобы импортировать ленивый загруженный модуль в AppModule. Удаление этого импорта устранило проблему для меня: https://github.com/angular/angular-cli/issues/9488#issuecomment-374037802
Ответ 6
Что касается меня, то проблема заключалась в импорте ChildModule после AppRoutingModule в AppModule. Переупорядочение их исправило мою проблему.
Ответ 7
По мне проблема заключается в том, что вы можете лениться загружать более одного модуля на тех же маршрутах в одном файле маршрутизации. Я также столкнулся с аналогичной проблемой и изменил название одного из маршрутов
Ответ 8
Мне удалось решить эту проблему, чтобы она работала как в разработке, так и в производстве. Хитрость заключается в том, чтобы также добавить ваши лениво загруженные модули в ваш угловой файл конфигурации CLI (angular.json). Смотрите мой ответ здесь: Angular 5 отложенная загрузка Ошибка: не удается найти модуль
Ответ 9
В вашем app.module.ts вы импортировали ListModule?
Я столкнулся с той же проблемой и смог исправить ее, удалив ленивые загруженные модули из импорта в app.module.ts