关于javascript:关于错误消息-RangeError-Maximum-call-stack-size-exceeded-at-XXX

47次阅读

共计 730 个字符,预计需要花费 2 分钟才能阅读完成。

谬误音讯:RangeError: Maximum call stack size exceeded at

ConnectableSubscriber.error

执行 Angular 开发的 Spartacus Storefront 时遇到。

RangeError: Maximum call stack size exceeded 当函数调用超出调用堆栈大小时抛出。

这可能是因为以下起因造成的:

  • 函数调用太多。
  • 解决递归的问题,例如递归函数中短少根本状况以进行有限调用本身。这个谬误通常是由递归调用导致的。递归调用可能会导致堆栈溢出。在这种状况下,须要找到造成递归调用的代码并找到一种办法来防止递归调用。

首先,能够应用调试工具(例如浏览器开发工具)查看抛出谬误的代码。而后,您能够思考上面几种解决方案:

(1) 防止对数据进行反复订阅。如果您在多个中央订阅了同一个数据源,则可能会产生递归调用。

(2) 应用 takeUntil 操作符,以在察看的某个时刻终止订阅。

(3) 应用可察看的错误处理机制(例如 catchError),以在产生谬误时终止订阅。

上面这段代码能够轻易重现该谬误。

RangeError: Maximum call stack size exceeded at 

浏览器里执行的后果:

  • 超出范围的操作。如果因为过多的函数调用或变量而产生此谬误,则应尽可能减少这些谬误。还应查看并防止任何超出范围的操作。能够应用浏览器控制台和开发人员工具查看这些问题。

此外,如果开发人员不小心两次导入 / 嵌入雷同的 JavaScript 文件,也可能会遇到这种状况。要解决此问题,请查看 JS 文件中的导入。此时开发人员会发现浏览器的资源选项卡很有用。

在旧版浏览器中,当尝试将太多参数传递给浏览器无奈解决的函数时,也会呈现 RangeError。

正文完
 0