Я работаю над большим проектом Next.js и сталкиваюсь с ошибкой времени выполнения только в рабочей среде.
Локально:
Код: Выделить всё
npm run buildКод: Выделить всё
npm run devВ производстве (VPS):
- Загружаю файлы сборки
- Запускаю рабочий сервер (следующий запуск)
- Получаю следующую ошибку:
Код: Выделить всё
TypeError: Cannot read properties of undefined (reading 'filter')- По всей базе кода был найден .filter(
- Добавлены защитные проверки (Array.isArray, необязательная цепочка, по умолчанию []) везде, где используется фильтр
- Проверено, что .filter() не вызывается для пустых массивов (что должно быть безопасно)
- Проект пересобран несколько раз
Дополнительный контекст
- В проекте используется Next.js
- Ошибка появляется только после развертывания на VPS
- Об ошибках во время сборки не сообщается
- Трассировка стека в рабочей среде недоступна
- Задействованы данные API (некоторые массивы получены из ответов серверной части .NET)
- Как эта ошибка может появляться только в рабочей среде, когда сборка успешна?
- Какие общие шаблоны производства Next.js вызывают вызов .filter() undefined?
- Как я могу отследить точный номер файла и строки, вызывающий эту ошибку в рабочей среде?
- Существуют ли различия, специфичные для Next.js (SSR, маршруты API, переменные окружения, выборка данных), которые могут вызвать это?
- Надежный способ найти источник этой ошибки в производство
- Рекомендации по постоянному предотвращению ошибок этого класса в большой базе кода Next.js
- Любые советы по отладке производства, специфичные для Next.js на VPS
Любой рекомендации были бы очень признательны.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -next-js-w