首页 > 解决方案 > 无法从 webpackAsyncContext 读取未定义的属性“调用”(Webpack 错误)

问题描述

我的网站上的某些页面出现以下错误。它与Webpack有关。

TypeError: Cannot read property 'call' of undefined

为什么会发生此错误?

堆栈跟踪没有显示我的任何代码。它发生在 Webpack 代码中:

function webpackAsyncContext(e) {
    if (!n.o(r, e))
        return Promise.resolve().then((function() {
            var t = new Error("Cannot find module '" + e + "'");
            throw t.code = "MODULE_NOT_FOUND",
            t
        }
        ));
    var t = r[e]
      , o = t[0];
    return Promise.all(t.slice(1).map(n.e)).then((function() {
        return n(o) // <---- ERROR HAPPENING HERE
    }
    ))
}

更新 1:

错误堆栈跟踪如下:

main-client.js?v=HBU…YpSTrLMew46Jy0:1644 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'call' of undefined
TypeError: Cannot read property 'call' of undefined
    at __webpack_require__ (main-client.js?v=HBU…HNYpSTrLMew46Jy0:20)
    at main-client.js?v=HBU…pSTrLMew46Jy0:38946
    at ZoneDelegate.invoke (main-client.js?v=HBU…pSTrLMew46Jy0:39643)
    at Object.onInvoke (main-client.js?v=HBU…YpSTrLMew46Jy0:7197)
    at ZoneDelegate.invoke (main-client.js?v=HBU…pSTrLMew46Jy0:39643)
    at Zone.run (main-client.js?v=HBU…pSTrLMew46Jy0:39537)
    at main-client.js?v=HBU…pSTrLMew46Jy0:40017
    at ZoneDelegate.invokeTask (main-client.js?v=HBU…pSTrLMew46Jy0:39656)
    at Object.onInvokeTask (main-client.js?v=HBU…YpSTrLMew46Jy0:7189)
    at ZoneDelegate.invokeTask (main-client.js?v=HBU…pSTrLMew46Jy0:39656)
    at resolvePromise (main-client.js?v=HBU…pSTrLMew46Jy0:39975)
    at resolvePromise (main-client.js?v=HBU…pSTrLMew46Jy0:39952)
    at main-client.js?v=HBU…pSTrLMew46Jy0:40018
    at ZoneDelegate.invokeTask (main-client.js?v=HBU…pSTrLMew46Jy0:39656)
    at Object.onInvokeTask (main-client.js?v=HBU…YpSTrLMew46Jy0:7189)
    at ZoneDelegate.invokeTask (main-client.js?v=HBU…pSTrLMew46Jy0:39656)
    at Zone.runTask (main-client.js?v=HBU…pSTrLMew46Jy0:39568)
    at drainMicroTaskQueue (main-client.js?v=HBU…pSTrLMew46Jy0:39754)
defaultErrorLogger  @   main-client.js?v=HBU…YpSTrLMew46Jy0:1644
ErrorHandler.handleError    @   main-client.js?v=HBU…YpSTrLMew46Jy0:1663
next    @   main-client.js?v=HBU…YpSTrLMew46Jy0:7472
i   @   main-client.js?v=HBU…YpSTrLMew46Jy0:6748
SafeSubscriber.__tryOrUnsub @   main-client.js?v=HBU…pSTrLMew46Jy0:27250
SafeSubscriber.next @   main-client.js?v=HBU…pSTrLMew46Jy0:27224
Subscriber._next    @   main-client.js?v=HBU…pSTrLMew46Jy0:27204
Subscriber.next @   main-client.js?v=HBU…pSTrLMew46Jy0:27196
Subject.next    @   main-client.js?v=HBU…pSTrLMew46Jy0:36275
EventEmitter.emit   @   main-client.js?v=HBU…YpSTrLMew46Jy0:6735
(anonymous) @   main-client.js?v=HBU…YpSTrLMew46Jy0:7207
ZoneDelegate.invoke @   main-client.js?v=HBU…pSTrLMew46Jy0:39643
Zone.run    @   main-client.js?v=HBU…pSTrLMew46Jy0:39537
NgZone.runOutsideAngular    @   main-client.js?v=HBU…YpSTrLMew46Jy0:7232
onHandleError   @   main-client.js?v=HBU…YpSTrLMew46Jy0:7206
ZoneDelegate.handleError    @   main-client.js?v=HBU…pSTrLMew46Jy0:39645
Zone.runGuarded @   main-client.js?v=HBU…pSTrLMew46Jy0:39550
_loop_1 @   main-client.js?v=HBU…pSTrLMew46Jy0:39890
Zone.__load_patch.n.microtaskDrainDone  @   main-client.js?v=HBU…pSTrLMew46Jy0:39896
drainMicroTaskQueue @   main-client.js?v=HBU…pSTrLMew46Jy0:39760
Promise.then (async)        
scheduleMicroTask   @   main-client.js?v=HBU…pSTrLMew46Jy0:39741
ZoneDelegate.scheduleTask   @   main-client.js?v=HBU…pSTrLMew46Jy0:39652
onScheduleTask  @   main-client.js?v=HBU…pSTrLMew46Jy0:39617
ZoneDelegate.scheduleTask   @   main-client.js?v=HBU…pSTrLMew46Jy0:39648
Zone.scheduleTask   @   main-client.js?v=HBU…pSTrLMew46Jy0:39586
Zone.scheduleMicroTask  @   main-client.js?v=HBU…pSTrLMew46Jy0:39592
scheduleResolveOrReject @   main-client.js?v=HBU…pSTrLMew46Jy0:40011
resolvePromise  @   main-client.js?v=HBU…pSTrLMew46Jy0:39971
(anonymous) @   main-client.js?v=HBU…pSTrLMew46Jy0:39928
webpackJsonpCallback    @   main-client.js?v=HBU…YHNYpSTrLMew46Jy0:5
(anonymous) @   0.js:formatted:1

更新 2:

从 Angular 7.2 升级到 9.1 后出现错误堆栈跟踪。还是同样的问题。

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'call' of undefined
TypeError: Cannot read property 'call' of undefined
    at __webpack_require__ (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:24)
    at Module.280 (3.js:1)
    at __webpack_require__ (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:24)
    at main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:57250
    at ZoneDelegate.invoke (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58417)
    at Object.onInvoke (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:13800)
    at ZoneDelegate.invoke (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58417)
    at Zone.run (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58227)
    at main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58839
    at ZoneDelegate.invokeTask (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58440)
    at resolvePromise (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58793)
    at resolvePromise (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58761)
    at main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58840
    at ZoneDelegate.invokeTask (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58440)
    at Object.onInvokeTask (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:13791)
    at ZoneDelegate.invokeTask (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58440)
    at Zone.runTask (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58267)
    at drainMicroTaskQueue (main-client.js?v=En9ov5sOxlQIVwZOduy8ehlKv7mPkjk-C6t7aJXanQY:formatted:58572)

更新 3:

它与延迟加载有关。当我将其更改为默认加载(直接导入模块)时,它起作用了。(我还更新了 href 并将其替换为 routerLink。)

现在,它具有默认加载。

标签: javascriptangularwebpack

解决方案


在条款和条件中,您引用了 AuthService 和 PageService。

我没有找到它们的声明位置。这个,即可能会错过 AuthService: https ://github.com/jasebanico/banicocms/blob/master/src/Banico.Web/ClientApp/app/shared/shared.module.ts

或者这个PageService: https ://github.com/jasebanico/banicocms/blob/master/src/Banico.Web/ClientApp/app/plugins/modules/page/page.module.ts

或者,您可以将@Injectable 与providedIn

这有帮助吗?

否则我觉得调试起来有点困难。所以我建议使用ng new来创建一个新的项目结构(你可以添加选项来忽略 git repo 的创建)并将你的代码合并到。这样你在升级时就不必处理适配 webpack 等问题了。


推荐阅读