Я написал критически важное приложение с использованием стека MERN для клиента, и оно работает без сбоев уже более 6 месяцев. Сегодня мой клиент уведомил меня, что при входе в приложение представление «Панель мониторинга» мигает на экране, а затем исчезает, выдавая эту ошибку: TypeError: r.filter не является функцией.
Представление Dashboard выполняет 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 билетов (более 30 МБ данных), независимо от того, подключаюсь ли я из среды локального хоста или из производственной среды.
Однако, когда я подключаю ту же кодовую базу к моей тестовой базе данных (у которой есть 34 заявки), никаких ошибок не возникает, и все работает гладко.
Это буквально единственное различие, которое я могу определить, которое вызывает эту ошибку и приводит к сбою всего приложения (количество тикетов, с которыми работают методы массива).
Как я уже говорил, производственное приложение работало без сбоев в течение последних 6 месяцев. Что может вызвать такую случайную ошибку, которая может привести к разрыву приложения?