Jon*_*gel 5 javascript webpack angular
我的网站上的某些页面出现以下错误。它与 Webpack 相关。
TypeError: Cannot read property 'call' of undefined
Run Code Online (Sandbox Code Playgroud)
为什么会发生此错误?
堆栈跟踪没有显示我的任何代码。它发生在 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
}
))
}
Run Code Online (Sandbox Code Playgroud)
更新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
Run Code Online (Sandbox Code Playgroud)
更新 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)
Run Code Online (Sandbox Code Playgroud)
更新 3:
它与延迟加载有关。当我将其更改为默认加载(直接导入模块)时,它起作用了。(我还更新了 hrefs 并用 routerLink 替换了它们。)
现在,它具有默认加载。
我要写一个答案,因为它作为评论太长了。我怀疑这是因为服务人员的原因。
\n\n我可以通过导航到食物链接或渲染页面一次后的另一个链接来重现您的问题。然后我有一个空白页,出现同样的错误。
\n\n如果在导航到另一个页面之前取消注册 Service Worker,则导航会成功。
\n\n要测试和禁用 Service Worker,请打开 chrome 的调试器,转到“应用程序”选项卡,然后单击左侧的“Service Workers” ,然后单击右侧的“取消注册” 。
\n\n您需要激活源映射来识别确切的错误,但我将其跟踪到文件的第 279 行(格式化后)3.js。
ForumSubforumFormComponent\n }()\n , F = o(294) // <=== error here\n , C = function() {\n function Topic(t) {\n this.contentItem = t,\nRun Code Online (Sandbox Code Playgroud)\n\n当Service Worker注册时,F是一个函数
\n\nconsole.log(F)\n\xc6\x92 hooks(){return a.apply(null,arguments)}\nRun Code Online (Sandbox Code Playgroud)\n\n当 Service Worker 注册时,o(294) 会抛出错误,可能是因为它未包含在 webpack 中。
\n\n在网络选项卡中查看请求的文件时,看起来有 2 个不同版本的main-client.js请求文件(取决于页面是由浏览器还是服务工作人员请求)。
这可能是问题的原因。
\n\n另外,Service Worker 只能使用 HTTPS 注册,这可以解释为什么在使用 http 之前没有出现问题。无法再在您的网站上测试 http,因为有 307 重定向到 https。
\n\n笔记正如其中一条评论所示,您网站上的导航有点奇怪。每次您导航时,它都会刷新整个页面。另外,角度通用似乎并不总是呈现
\n| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |