Javascript 角度:错误:webpackAsyncContext(eval at./src/$$\u lazy\u route\u资源)处未捕获(承诺中)
我正在从Angular 4.0.0升级到Angular 5.2.6 我在让惰性模块加载工作时遇到了一些问题 使用angular 4.0.0,它工作正常,但现在使用5.2.6,我在单击重定向按钮时遇到这样的错误:Javascript 角度:错误:webpackAsyncContext(eval at./src/$$\u lazy\u route\u资源)处未捕获(承诺中),javascript,angular,lazy-loading,angular-routing,angular-router,Javascript,Angular,Lazy Loading,Angular Routing,Angular Router,我正在从Angular 4.0.0升级到Angular 5.2.6 我在让惰性模块加载工作时遇到了一些问题 使用angular 4.0.0,它工作正常,但现在使用5.2.6,我在单击重定向按钮时遇到这样的错误: core.js:1448 ERROR Error: Uncaught (in promise): TypeError: undefined is not a function TypeError: undefined is not a function at Array.map
core.js:1448 ERROR Error: Uncaught (in promise): TypeError: undefined is not a function
TypeError: undefined is not a function
at Array.map (<anonymous>)
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:27), <anonymous>:13:34)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6558)
at SystemJsNgModuleLoader.load (core.js:6542)
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 Array.map (<anonymous>)
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:27), <anonymous>:13:34)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6558)
at SystemJsNgModuleLoader.load (core.js:6542)
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 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:4740)
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)
建议???我已通过在devDependenices(package.json)中本地升级mtangular cli解决了此问题从1.2.0到1.6.7如中所述,它似乎与
ng serve--aot一起工作。我遇到了相同的问题。这可能是angular cli的错误。我仍然不确定该错误是在cli中还是在我们的代码中!如中所述,仍然可以使用aot编译:
ng服务--aot
我还通过将angular cli从1.7.2降级到1.6.8解决了这个问题,这是在我们的案例中似乎有效的最后一个cli版本。我遇到了完全相同的问题,但只是重新启动节点服务器(ng s)就解决了这个问题
经验法则:如果angular开始表现出奇怪的行为,首先尝试重新启动您的节点服务器遇到同样的问题。重新启动angular服务器
ng serve对我有效。不要在主app.module.ts中导入延迟加载的模块。这将导致循环依赖关系并抛出您收到的错误.如前所述,我已更改了我的app.module.ts
中的导入顺序
因此,您需要将其设置为如下示例:
imports: [
BrowserModule,
FormsModule,
HeroesModule,
AppRoutingModule
]
最重要的是首先使用浏览器模块
,然后在最后使用批准模块
ng服务--aot
虽然它编译代码,但它不是一种解决方案,它只是一种掩饰。
如果确定它不是CLI版本,请尝试以下解决方案
您需要做的是确保在app.module.ts
中没有加载延迟加载的模块
例如:
app.module.ts
imports: [
...
AppRouterModule,
FormsModule,
YourFeatureModule, <--- remove this
...
]
希望这有助于使用ng serve--aot。通常是Angular CLI在生成延迟加载的Angular模块时将其添加到AppModule中。解决方案1 导入顺序很重要,因此顶部的
导入延迟加载模块
,最后一个位置的路由器模块
。因为我们正在进行延迟加载,所以在进行路由之前,延迟加载模块必须存在
imports: [
BrowserModule,
HeroModule, // Lazy-loaded module
AppRoutingModule
],
解决方案2
通常生成时,
Angular CLI
会将模块
导入到应用程序模块
。因此,请确保延迟加载的
模块没有导入到应用程序模块
,这样就不会出现错误,路由也不会更改到目标模块。!我的意思是不会发生任何事情。@Rohitharma惰性loaded模块实际上是“延迟加载”时加载到角喷油器中在运行时。不将其包含在主app.module.ts中允许在用户单击路由时加载模块及其依赖项。此语法app/home/admin/admin.module#AdminModule
是实现此功能的途径。哇,这为我解决了问题。但是,问题只有在升级CLI后才浮出水面。它解决了问题我没有浏览器模块,也不需要它。最重要的是在终端保持路由。谢谢,救了我一天!这是真的。谢谢。
app-routing.module.ts
loadChildren: '../app/feature.module#YourFeatureModule'
imports: [
BrowserModule,
HeroModule, // Lazy-loaded module
AppRoutingModule
],