Мое приложение использует ленивую загрузку для загрузки необходимых модулей с маршрутами. Все мои модули лениво загружаются с одним и тем же маршрутом, объявленным в моем tsconfig.json. Большинство из них работает нормально, но по какой-то причине одна все еще выдает эту ошибку.
ERROR Error: Uncaught (in promise): Error: Cannot find 'TemplateModule' in '@blockframes/material'
Путь @blockframes/material объявлен в файле tsconfig.ts и относится к этому
"@blockframes/material": ["libs/material/src/index.ts"]
Другие библиотеки импортируются таким же образом, и ленивая загрузка работает для них как шарм. Самое странное здесь то, что я лениво загружаю 2 модуля из библиотеки материалов и только один работает без ошибок.
Вот мои маршруты в app-routing-module:
export const routes: Routes = [
{ path: '', redirectTo: 'layout', pathMatch: 'full' },
{
path: 'auth',
loadChildren: '@blockframes/auth#AuthModule'
},
{
path: 'layout',
component: LayoutComponent,
canActivate: [AuthGuard, OrganizationListGuard],
canDeactivate: [OrganizationListGuard],
children: [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{
path: 'organization',
loadChildren: '@blockframes/organization#OrganizationModule'
},
{
path: 'account',
// loadChildren: '@blockframes/account#AccountModule' // TODO this fail with "Error: Uncaught (in promise): Error: Cannot find 'AccountModule' in '@blockframes/account'"
loadChildren: 'libs/account/src/lib/account/account.module#AccountModule'
},
{
path: 'home',
canActivate: [MovieListGuard],
canDeactivate: [MovieListGuard],
loadChildren: '@blockframes/movie#MovieModule'
},
{ path: 'templates',
// loadChildren: '@blockframes/material#TemplateModule' // TODO this fail with "Error: Uncaught (in promise): Error: Cannot find 'TemplateModule' in '@blockframes/material'"
loadChildren: 'libs/material/src/lib/template/template.module#TemplateModule'
},
{
path: ':movieId',
canActivate: [MovieActiveGuard],
canDeactivate: [MovieActiveGuard],
loadChildren: '@blockframes/material#DeliveryModule'
}
]
},
{
path: 'not-found',
loadChildren: '@blockframes/ui#ErrorNotFoundModule'
},
{
path: '**',
redirectTo: 'not-found'
}
];
Как видите, у меня та же проблема с @blockframes/account. Вы также можете принять к сведению, что @blockframes/material#DeliveryModule успешно загружается отложенно, даже если TemplateModule имеет ту же архитектуру, что и DeliveryModule.
Я понял, что могу изменить свои абсолютные пути на пути @blockframes (для шаблона и учетной записи), и приложение все равно будет работать после перестройки. Если я остановлю сервер и ng serve
, я снова получу ошибку «Не удается найти модуль».
Я попытался переименовать свой модуль, так как материал может быть ключевым словом, но это не решило проблему.
Большое спасибо за внимание, если у вас есть какие-либо вопросы по этой проблеме, я буду рад ответить на них так быстро, как смогу.
tsconfig.app.json
в массив атрибутовinclude
(что-то вроде"include": [ "**/*.ts", "../../../libs/my-lazy-load-library/src/index.ts"]
- person julianobrasil   schedule 22.05.2019@blockframes/material#DeliveryModule
, мой TemplateModule больше не будет получать ошибку. - person Alvard   schedule 22.05.2019