MERN 堆栈应用程序在生产 6 个月后随机中断,并引发以下错误:"TypeError: r.filter is not a function"



我使用MERN堆栈为客户端编写了一个完整的堆栈关键应用程序,并且它已经运行了6个月以上。今天,我的客户通知我,登录应用程序后,仪表板视图在屏幕上闪烁,然后消失,抛出此错误:typeError:r.filter不是函数。

仪表板视图对后端进行了AJAX调用,并从数据库中获取了许多票,然后将其存储在Redux中,然后分类并显示在浏览器上。该组件中有几种数组方法,例如:

  const awaiting = tickets.filter(
    ticket =>
      (ticket.status === 'Return to Provider' ||
        ticket.status === 'Require survey') &&
      !ticket.closed
  );
  const unassigned = tickets.filter(
    ticket => ticket.status === 'Unassigned'
  );
  const pending = tickets.filter(ticket => ticket.status === 'Issued');
  const active = tickets.filter(
    ticket =>
      ticket.status === 'On field' ||
      ticket.status === 'Provisioning required by client'
  );
  const complete = tickets.filter(
    ticket =>
      (ticket.status === 'Complete' ||
        ticket.status === 'Complete to activate at a later date') &&
      !ticket.closed
  );

在第一个.filter方法下,误差丢弃。如果我评论出来,则错误将在下一个等等。在使用数组方法的任何地方都会丢弃同样的错误,这是确切的错误消息:

TypeError: r.filter is not a function
at t.value (Dashboard.js:99)
at Mi (react-dom.production.min.js:3785)
at Pi (react-dom.production.min.js:3776)
at ji (react-dom.production.min.js:3960)
at Ba (react-dom.production.min.js:5514)
at $a (react-dom.production.min.js:5536)
at Mu (react-dom.production.min.js:5958)
at Cu (react-dom.production.min.js:5925)
at ku (react-dom.production.min.js:5860)
at Xa (react-dom.production.min.js:5787)

当我尝试访问应用程序中的另一个视图时,其中使用数组方法来渲染门票列表,我会遇到相同的错误。但是,我能够访问任何其他不会呈现门票列表的视图,没有错误的错误。

注意:这仅在我连接到生产数据库时发生,该数据库具有超过2000张票(超过30MB的数据(,无论我是从本地主机环境还是从生产环境中连接。

但是,当我将相同的代码库连接到测试数据库(有34个票(时,没有错误,一切都顺利运行。

这实际上是我可以识别的唯一区别,这些区别正在产生此错误并崩溃整个应用程序(数组方法正在运行的机票数(。

正如我之前所说,生产应用程序在过去6个月中运行顺利。什么会导致这样的随机破坏应用错误?

可能有很多原因使filter()可能在您的情况下无法使用。您可以指定要获得的网络响应吗?那将是开始调试的好方法。

这里有2个主要故障点:

  1. 响应从后端出错或根本不出现(服务器端故障,这似乎是可能的原因,因为您的应用程序突然破裂了(

  2. 您的客户端代码有问题

由于多种原因,后端的响应可能会破裂。您可以检查:

  • SSL证书到期
  • 环境变量错误功能问题
  • 响应非常大(正如您所说的30MB,在这种情况下,您可以使用并且绝对应该使用分页(

相关内容

最新更新