Angular 为什么我的一些惰性加载模块可以';找不到,别人也能找到?

Angular 为什么我的一些惰性加载模块可以';找不到,别人也能找到?,angular,angular2-routing,lazy-loading,angular-module,Angular,Angular2 Routing,Lazy Loading,Angular Module,我的应用程序正在使用延迟加载来加载包含路由的必要模块。我的所有模块都是使用相同的路由延迟加载的,在我的tsconfig.json中声明。它们中的大多数工作正常,但出于某种原因,仍有人抛出此错误 错误错误:未捕获(承诺中):错误:在“@blockframes/material”中找不到“TemplateModule” @blockframes/material路径在tsconfig.ts文件中声明,并引用该路径 “@blockframes/material”:[“libs/material/src

我的应用程序正在使用延迟加载来加载包含路由的必要模块。我的所有模块都是使用相同的路由延迟加载的,在我的tsconfig.json中声明。它们中的大多数工作正常,但出于某种原因,仍有人抛出此错误

错误错误:未捕获(承诺中):错误:在“@blockframes/material”中找不到“TemplateModule”

@blockframes/material路径在tsconfig.ts文件中声明,并引用该路径

“@blockframes/material”:[“libs/material/src/index.ts”]

其他库也是以同样的方式导入的,而延迟加载对它们来说就像一个符咒。最奇怪的是,我从material library懒洋洋地加载了两个模块,其中只有一个似乎可以正常工作

以下是我在应用程序路由模块中的路由:

导出常量路由:路由=[
{路径:'',重定向到:'layout',路径匹配:'full'},
{
路径:“auth”,
loadChildren:“@blockframes/auth#AuthModule”
},
{
路径:“布局”,
组件:布局组件,
canActivate:[AuthGuard,OrganizationListGuard],
canDeactivate:[OrganizationListGuard],
儿童:[
{路径:'',重定向到:'home',路径匹配:'full'},
{
路径:'组织',
loadChildren:“@blockframes/organization#OrganizationModule”
},
{
路径:'帐户',
//loadChildren:“@blockframes/account#AccountModule”//TODO此操作失败,出现“错误:未捕获(承诺中):错误:无法在“@blockframes/account”中找到“AccountModule”
loadChildren:'libs/account/src/lib/account/account.module#AccountModule'
},
{
路径:“家”,
可激活:[MovieListGuard],
canDeactivate:[MovieListGuard],
loadChildren:“@blockframes/movie#MovieModule”
},
{路径:'模板',
//loadChildren:“@blockframes/material#TemplateModule”//TODO此操作失败,出现“错误:未捕获(承诺中):错误:无法在“@blockframes/material”中找到“TemplateModule”
loadChildren:'libs/material/src/lib/template/template.module#TemplateModule'
},
{
路径:':movieId',
canActivate:[MovieActiveGuard],
canDeactivate:[MovieActiveGuard],
loadChildren:“@blockframes/material#DeliveryModule”
}
]
},
{
路径:“未找到”,
loadChildren:“@blockframes/ui#ErrorNotFoundModule”
},
{
路径:'**',
重定向到:“未找到”
}
];
如你所见,我在@blockframes/account上也遇到了同样的问题。您还可以注意到@blockframes/material#DeliveryModule已成功延迟加载,如果TemplateModule与DeliveryModule具有相同的体系结构,则会发生此事件

我意识到我可以将我的绝对路径更改为@blockframes路径(用于模板和帐户),并且该应用程序在重建后仍将运行。如果我停止服务器并
ng serve
,我将再次出现找不到模块错误

我试图重命名我的模块,因为材质可以是关键字,但它没有解决问题


非常感谢您的关注,如果您对这个问题有任何疑问,我很乐意尽快回答。

因为我们似乎不能从sale library以相同的级别(至少是相同的路径)延迟加载两个模块,这似乎是可行的(直到有人找到更优雅的方法来解决此问题)

在tsconfig.json中

"@blockframes/material": ["libs/material/src/index.ts"],
"@blockframes/template": ["libs/material/src/index.ts"]
应用内路由模块

@blockframes/template#TemplateModule

作为奖励,一位同事告诉我Angular 8将导入动态导入。我们可以这样进口:


import(“@blockframes/material”)。然后(x=>x.TemplateModule)

因为我们似乎不能从sale library以相同的级别(至少是相同的路径)延迟加载两个模块,这似乎是可行的(直到有人找到更优雅的方法来解决此问题)

在tsconfig.json中

"@blockframes/material": ["libs/material/src/index.ts"],
"@blockframes/template": ["libs/material/src/index.ts"]
应用内路由模块

@blockframes/template#TemplateModule

作为奖励,一位同事告诉我Angular 8将导入动态导入。我们可以这样进口:


import(“@blockframes/material”)。然后(x=>x.TemplateModule)

我遇到了一个问题,我的一个项目(基于@nrl的项目)也找不到惰性库。在我的例子中,我必须在
include
属性数组中包含
tsconfig.app.json
中的所有惰性库(类似于
“include”):[“***.ts”,“../../../libs/my lazy load library/src/index.ts”]
似乎我不能在同一级别上从同一个库延迟加载两个模块。例如,如果我对我的
@blockframes/material#DeliveryModule
进行注释,我的TemplateModule不再出错。我的一个项目(基于@nrwl的项目)遇到了问题也没有找到惰性库。在我的例子中,我必须将
tsconfig.app.json
中的所有惰性库都包含在
include
属性数组中(类似于
“include”):[“***/*.ts”,“../../../../libs/my lazy load library/src/index.ts”]
似乎我无法在同一级别上从同一个库延迟加载两个模块。例如,如果我对我的
@blockframes/material#DeliveryModule
进行注释,我的TemplateModule就不再出错。