Angular Preload所有模块导致引用错误:无法访问';myModule';初始化前

Angular Preload所有模块导致引用错误:无法访问';myModule';初始化前,angular,ionic-framework,angular-routing,angular-module,Angular,Ionic Framework,Angular Routing,Angular Module,[使用:角度8,色度79,离子4,开发模式(离子服务)] 我的Angular Router出现问题,我已启用了Preload AllModules,这取决于我的路由定义中哪个模块首先出现,它将导致ReferenceError:无法在初始化之前访问另一个模块 从“@angular/core”导入{NgModule}; 从“@angular/router”导入{preload所有模块,RouterModule,Routes}; 常数路由:路由=[ { 路径:“”, 路径匹配:“满”, 重定向至:“主

[使用:角度8,色度79,离子4,开发模式(离子服务)]

我的Angular Router出现问题,我已启用了
Preload AllModules
,这取决于我的路由定义中哪个模块首先出现,它将导致
ReferenceError:无法在初始化之前访问另一个模块

从“@angular/core”导入{NgModule};
从“@angular/router”导入{preload所有模块,RouterModule,Routes};
常数路由:路由=[
{
路径:“”,
路径匹配:“满”,
重定向至:“主页”
},
{
loadChildren:()=>import(“./home/home.module”)。然后((m)=>m.HomePageModule),
路径:“家”
},
{
loadChildren:()=>import(“./list/list.module”)。然后((m)=>m.ListPageModule),
路径:“列表”
},
{
加载子项:()=>
导入(“./myFirstModule/app/myFirstModule.module”)。然后((m)=>m.myFirstModule),
路径:“myFirstModule”
},
{
加载子项:()=>
导入(“./mySecondModule/app/mySecondModule.module”)。然后((m)=>m.mySecondModule),
路径:“mySecondModule”
}
];
@NGD模块({
导出:[路由模块],
导入:[RouterModule.forRoot(路由,{PrelodingStrategy:PreloadAllModules}]
})
导出类AppRoutingModule{}
上面的代码将触发:
ReferenceError:在初始化之前无法访问“mySecondModule”
当单击我菜单中的链接时,但是如果我直接通过URL访问路由,则不会触发错误

如果我不使用
myFirstModule
mySecondModule
这样:

const routes:routes=[
{
路径:“”,
路径匹配:“满”,
重定向至:“主页”
},
{
loadChildren:()=>import(“./home/home.module”)。然后((m)=>m.HomePageModule),
路径:“家”
},
{
loadChildren:()=>import(“./list/list.module”)。然后((m)=>m.ListPageModule),
路径:“列表”
},
{
加载子项:()=>
导入(“./mySecondModule/app/mySecondModule.module”)。然后((m)=>m.mySecondModule),
路径:“mySecondModule”
},
{
加载子项:()=>
导入(“./myFirstModule/app/myFirstModule.module”)。然后((m)=>m.myFirstModule),
路径:“myFirstModule”
}
];
导航到
myFirstModule
ReferenceError:初始化之前无法访问“myFirstModule”
,但如果直接通过URL访问,则会发生此错误

如果我删除Preload AllModule,我可以第一次导航到任何模块,但当我访问其他模块时,我的库出现错误:
错误错误:未捕获(承诺中):TypeError:无法读取未定义的属性“prototype”
TypeError:无法读取sax处未定义的属性“prototype”。js:222

myFirstModule

导出函数createTranslateLoader(http:HttpClient):TranslateHttpLoader{ 返回新的TranslateHttpLoader(http,“./assets/i18n/”,“.json”); } @NGD模块({ 声明:[ MyFirstModuleComponent, ... ], 入口组件:[ ... ], 出口:[], 进口:[ 公共模块, 离子模块, MyMaterialModule, MyStore1模块, RouterModule.forChild([ { 组件:MyFirstModuleComponent, 路径:“ } ]), TranslateModule.forChild({ 加载器:{ deps:[HttpClient], 提供:TranslateLoader, useFactory:createTranslateLoader } }) ], 提供者:[MyService] }) 导出类MyFirstModule{}
MySecondModule

registerLocaleData(默认为“fr”);
@NGD模块({
声明:[
MySecondModuleComponent,
...
],
入口组件:[
...
],
进口:[
公共模块,
MyMaterialModule,
MatDialogModule,
单击外部模块,
MyStore2模块,
MyStore3模块,
AngularSplitModule.forChild(),
HighchartsChartModule,
RouterModule.forChild([
{
组件:MySecondModuleComponent,
路径:“
}
])
],
供应商:[
{
提供:LOCALE\u ID,
useValue:“fr”
}
]
})
导出类MySecondModule{}
我找到了一个解决方案

一位同事在没有npm的情况下导入了sax,这导致xml2js和jszip在此库上发生冲突

我通过npm安装了sax,并删除了手动导入,现在它正在工作。

我找到了一个解决方案

一位同事在没有npm的情况下导入了sax,这导致xml2js和jszip在此库上发生冲突


我通过npm安装了sax,并删除了手动导入,现在可以正常工作。

您可以尝试将第一条路径移动到路由列表的末尾。@Edric移动第一条路径({[…]路径匹配:“full”[…])仍会触发错误您确定这是导致问题的代码吗?在MySecondModule代码中有“MySecondModule”作为组件的引用。@kvetis是的,这是一个打字错误。对不起,我省略了名称。我认为它可能与sax.js有关,因为我使用xml2js和jszip,但我不知道……您可以尝试将第一条路径移动到路由列表的末尾。@Edric移动第一条路径({[…]pathMatch:“full”[…]})仍在触发错误您确定这是导致问题的代码吗?在MySecondModule代码中有“MySecondModule”作为组件的引用。@kvetis是的,这是一个打字错误抱歉,我忽略了名称我想它可能与sax.js有关,因为我使用xml2js和jszip,但我不知道。。。