Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度:错误:webpackAsyncContext(eval at./src/$$\u lazy\u route\u资源)处未捕获(承诺中)_Javascript_Angular_Lazy Loading_Angular Routing_Angular Router - Fatal编程技术网

Javascript 角度:错误:webpackAsyncContext(eval at./src/$$\u lazy\u route\u资源)处未捕获(承诺中)

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

我正在从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 (<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.01.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
  ],