Nuxt 超出最大调用堆栈大小

Posted

技术标签:

【中文标题】Nuxt 超出最大调用堆栈大小【英文标题】:Nuxt Maximum call stack size exceeded 【发布时间】:2021-10-13 20:07:00 【问题描述】:

我尝试设置函数的间隔,以便在组件将被销毁时将其删除,但出现此错误。并且找不到任何解决方案。

我的区间函数:

<script>
export default 
  data: () => (
    ordersInterval: null,
  ),

  async fetch() 
    const data = await this.$axios.post(`$this.apiURLorders`, 
      per_page: this.$store.state.pagination.per_page,
      page: this.$store.state.pagination.current_page,
    )
    this.orders = data.data.data
    this.$store.dispatch('changePaginationData', 
      paginationData: data.data.meta,
    )
    this.ordersInterval = setInterval(() => 
      this.filterOrders()
    , 10000)
  ,

</script>

我该如何解决这个错误?

【问题讨论】:

当您的代码中有某种不受控制的递归时,通常会调用调用堆栈异常。试着找到它。它可能不在您显示的这段代码中 在这段代码中。如果我只设置 setInterval() 而不设置变量,它可以正常工作 这确实是一些生命周期或者一些死循环的问题。 【参考方案1】:

ESlint 正在抱怨并将其标记为错误。 这可能是因为fetch() 需要知道何时完成提取,尤其是像$fetchState.pending 这样的帮助者。

我在一些代码中使用了setInterval,但它在事件中被调用。你最终可以有一个观察者并在它为真时调用setInterval(在你的fetch()钩子中切换它)。


如果可以,请尝试使用 websocket 或比轮询更灵活的系统。 轮询也可能很难编写(使用this),这里有一个关于如何编写它的好答案:https://***.com/a/43335772/8816585

【讨论】:

以上是关于Nuxt 超出最大调用堆栈大小的主要内容,如果未能解决你的问题,请参考以下文章

Angular 11最大调用堆栈大小超出错误

RangeError:超出最大调用堆栈大小

超出最大调用堆栈大小 - 没有明显的递归

nrwl - ng generate 给出超出最大调用堆栈大小

递归过多/超出最大调用堆栈大小(Jquery 1.9.1)

Node.js + mongoose [RangeError: 超出最大调用堆栈大小]