【问题标题】:Cannot read property 'call' of undefined from webpackAsyncContext (Webpack error)无法从 webpackAsyncContext 读取未定义的属性“调用”(Webpack 错误)
【发布时间】:2020-03-14 00:28:30
【问题描述】:

我的网站上的某些页面出现以下错误。它与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。)

现在,它有默认加载。

【问题讨论】:

  • 我没有收到错误消息——但是,对于 HTTPS 页面,我的浏览器会询问我是否要安装应用程序——但如果我访问 HTTP 则不会。所以也许这就是问题所在?或者可能发布输出此错误的代码部分。
  • @JeffVdovjak 它现在在 HTTP 和 HTTPS 中都发生了,所以我已经更新了我的问题并放入了发生错误的代码部分。
  • 可能是由于 gstatic cookie。至少这是我在 chrome 中得到的警告。不过,我在提供的网址上没有收到任何错误。你修好了吗?
  • 我没有收到任何错误。尝试从您的浏览器硬重新加载或使用其他浏览器,可能是缓存问题
  • 我在不同的计算机和浏览器(Chrome、Firefox、Safari)上尝试过,但都失败了。 (页面应该显示帖子内容,而不仅仅是标题栏。)我已经使用堆栈跟踪更新了帖子。

标签: javascript angular webpack


【解决方案1】:

我要写一个答案,因为它作为评论太长了。我怀疑这是因为服务人员。

我可以通过导航到食物链接或页面呈现一次后的另一个链接来重现您的问题。然后我有一个同样错误的空白页。

如果在导航到另一个页面之前我取消注册服务工作者,导航成功。

要测试和禁用 service worker,打开 chrome 的调试器,进入 Application 标签,然后点击左侧的 Service Workers,然后点击 unregister 在右侧。

您需要激活源映射以识别确切的错误,但我将其追踪到文件 3.js 的第 279 行(格式化后)。

ForumSubforumFormComponent
    }()
      , F = o(294) // <=== error here
      , C = function() {
        function Topic(t) {
            this.contentItem = t,

注册Service Worker时,F是一个函数

console.log(F)
ƒ hooks(){return a.apply(null,arguments)}

在注册 service worker 时,o(294) 会抛出错误,可能是因为它没有包含在 webpack 中。

在网络选项卡中查看请求的文件时,看起来有 2 个不同版本的 main-client.js 文件被请求(取决于浏览器或服务工作人员是否请求了该页面)。

这可能是问题的原因。

另外,Service Worker 只能使用 HTTPS 注册,这可以解释为什么在使用 http 之前没有出现问题。无法再在您的网站上测试 http,因为存在 307 重定向到 https。

注意 如其中一个 cmets 所示,您网站上的导航有点奇怪。每次导航时它都会刷新整个页面。此外,角度通用似乎并不总是呈现

【讨论】:

  • 感谢您的意见。它可能适用于服务器端渲染?我已将其关闭并重新部署以测试它是否会修复它,但我仍然遇到问题。这可能就是您在使用 Angular Universal 时遇到问题的原因。我不确定如何可能有两个版本的 main-client.js。我在文件系统中只看到 1。
  • 我也认为它可以在服务器端工作,所以这可能就是为什么有些人没有看到任何问题?
  • 我已更新导航以使用 routerLink 而不是 href。它似乎暴露了模块错误。论坛模块似乎有问题,但我无法弄清楚它是什么。
  • 问题与延迟加载有关。当我直接导入模块时,它可以工作。我已经更新了上面的问题。
  • 并非如此。它适用于默认加载,因此我暂时将其保留。我不需要延迟加载模块,但最终我会回来解决这个问题。
【解决方案2】:

在条款和条件中您引用了 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 之类的事情了。

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 2017-12-02
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2018-03-03
    • 1970-01-01
    相关资源
    最近更新 更多