【问题标题】:How to debug errors like "Maximum call stack size exceeded"如何调试“超出最大调用堆栈大小”等错误
【发布时间】:2021-01-04 11:44:52
【问题描述】:

我有一个 Ionic/angular 项目,我暂停了一段时间。我继续处理它,但控制台出现错误。用户效果是 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 error RangeError: Maximum call stack size exceeded

但我不知道哪里会导致问题。

我试图在我所在页面的ngOnInit/constructor 上评论所有内容,但没有成功。

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

在这之后我有一个 firebase 超时,但我想这是因为 angular 忙于处理这个调用堆栈问题。

【问题讨论】:

  • 这意味着你的代码中某处存在无限循环。如果它发生在任何地方,它很可能来自服务。
  • @Ploppy 我还没有任何服务,我正在使用 NGXS,连接到 Firebase,所以目前我只需要调度操作并连接结果。知道我可以激活或追踪某些东西以查看它的来源吗?为什么我在调用堆栈中看不到任何内容?
  • 典型的这种情况发生在,在 ReactiveForms 中,一个控件依赖于另一个控件 - 或禁用了一个控件 - 并且你在没有 {emitEvent:false} 的情况下创建了一个 setValue - 这就像你的问题与一个 swithMap 相关可观察到,但我不知道如何检查问题出在哪里
  • @Eliseo我刚刚评论了我的解决方案中的每个 switchMap,再次运行了 ionic serve,但我仍然遇到了问题:'(。另外,我只有一个表单(登录表单)但我已经登录了并且不显示任何形式)

标签: angular debugging ionic-framework


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多