Angular Preload所有模块导致引用错误:无法访问';myModule';初始化前
[使用:角度8,色度79,离子4,开发模式(离子服务)] 我的Angular Router出现问题,我已启用了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}; 常数路由:路由=[ { 路径:“”, 路径匹配:“满”, 重定向至:“主
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,但我不知道。。。