如何调试“超出最大调用堆栈大小”之类的错误

问题描述 投票:0回答:2

我有一个离子/角度项目,我暂停了一段时间。我继续处理它,但控制台中出现错误。用户效果是,10-15 秒内没有显示任何内容,然后我的 google 已加载,但随后我没有看到任何故障。

core.js:4197 ERROR RangeError: Maximum call stack size exceeded
    at MapSubscriber._error (Subscriber.js:75)
    at MapSubscriber.error (Subscriber.js:55)
    at MergeMapSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)
    at InnerSubscriber.error (Subscriber.js:55)
    at CatchSubscriber._error (Subscriber.js:75)
    at CatchSubscriber.error (Subscriber.js:55)
    at CatchSubscriber.error (catchError.js:32)
    at MergeMapSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)

我搜索了一下,我已经从 Angular 10 更新到 Angular 11,更新了所有库,在 stackoverflow 上找到了很多答案,包括这个 Angular 7 错误 RangeError:超出最大调用堆栈大小

但我不知道哪个区域会导致问题。

我尝试在我所在页面的

ngOnInit
/
constructor
上评论所有内容,但没有成功。

我怎样才能找到此类错误的根本原因?我真的很迷茫,我不知道该怎么办,这只会让我的应用程序冻结 10-15 秒然后崩溃。

在此之后我遇到了 Firebase 超时,但我猜这是因为 Angular 太忙于处理这个调用堆栈问题。

angular debugging ionic-framework
2个回答
3
投票

这不是一个普遍的答案,但我希望它能给出一些例子:

在我的例子中,我从模块 B 引用了模块 A,从模块 A 引用了模块 B,所以这个循环引用导致了堆栈溢出,从而产生了这个结果。


0
投票

在我的例子中,错误是由“循环引用错误”引起的,就像此类堆栈溢出错误经常出现的情况一样。我使用一个工具自动生成桶文件,其中在文件中包含一行 export * from './' 。这导致了错误。

我使用 

git bisect

查找引入错误的提交。幸运的是,提交量很小,所以并不太难

我知道这不是“如何调试诸如...之类的错误”问题的直接答案,但希望它可以帮助任何在调试此错误时遇到此线程的人。

© www.soinside.com 2019 - 2024. All rights reserved.