Fatal JavaScript invalid size error 169220804 — как исправить
Если вы видите «Fatal JavaScript invalid size error 169220804», начните с проверки бесконечных циклов и неправильного использования методов массивов, затем переместите heavy-пакеты в devDependencies, очистите и переустановите node_modules и, при необходимости, переключитесь на совместимую версию Node через NVM. В статье есть чек-лист для разработчика, пошаговые команды и сценарии, когда предложенные решения не помогут.

Fatal JavaScript invalid size error 169220804 чаще всего встречается у разработчиков при локальной сборке или запуске приложения. Ошибка часто вызвана проблемами в коде, несоответствующими зависимостями или несовместимой версией Node. Ниже — понятное пошаговое руководство, советы для отладки и дополнительные проверки.
Что вызывает ошибку
- Логические ошибки в коде, например бесконечные или долго выполняющиеся циклы.
- Модули, которые должны быть в devDependencies, но находятся в зависимостях (dependencies).
- Повреждённая папка node_modules или несовместимая версия Node.
- Неправильное использование методов массивов (например, map без возвращаемого значения в стрелочной функции с фигурными скобками).
Важно: большинство случаев связано с ошибкой в коде — начните с простых проверок кода, прежде чем менять окружение.
Быстрые проверки перед правками
- Просмотрите код на предмет бесконечных циклов (for/while/recursion). Один неверный условный оператор может создать «вечный» цикл.
- В Next.js можно попробовать удалить директорию
.nextи пересобрать проект. - Проверьте массивы: вызовы
array.map()должны возвращать значение, если вы рассчитываете на новый массив.
Пошаговые решения
1. Перенесите react-scripts в devDependencies
- Откройте файл
package.json. - Найдите запись
"react-scripts": "5.0.1"в разделеdependencies.

- Вырежьте запись и вставьте её в раздел
devDependencies.

- Сохраните изменения и выполните
npm install.
Совет: некоторые пользователи отмечают, что стоит также переместить в devDependencies типы @types/*, если они не требуются в runtime.
2. Полностью переустановите node_modules
- Откройте терминал и перейдите в папку проекта.
- Удалите директорию
node_modulesи файлpackage-lock.json, если хотите начать с чистой установки:
rd /s /q node_modules # Windows CMD
rm -rf node_modules package-lock.json # macOS / Linux
- Переустановите зависимости:
npm install
Замечание: если используете yarn, выполните yarn install.
3. Понизьте версию Node (если проект требует старой версии)
- Определите, с какой версией Node проект компилировался из документации, CI-конфигурации или файла
.nvmrc. - Установите NVM (Node Version Manager), если он ещё не установлен.
- В терминале выполните команды (пример для версии 10.24.0):
nvm install 10.24.0
nvm use 10.24.0

- Попробуйте собрать проект заново и проверьте, исчезла ли ошибка.
Альтернативные подходы и когда эти решения не помогут
- Если после проверки кода и переустановки зависимостей ошибка остаётся, проверьте нативные модули (native addons) и бинарные зависимости — они могут требовать сборки под конкретную версию Node.
- В контейнеризированных средах (Docker) убедитесь, что образ использует ту же версию Node, что и локально.
- Если ваша проблема связана с памятью (heap), имеет смысл исследовать сообщения о JavaScript heap out of memory и добавить флаги
--max-old-space-sizeпри запуске.
Примеры, когда предложенные шаги не решат проблему:
- Аппаратные ограничения контейнера или CI-сервера (слишком мало памяти).
- Ошибки в нативных расширениях, требующих перекомпиляции (node-gyp).
Чек-лист для быстрой отладки (минимум для начала)
- Остановить процесс и повторить сборку локально в режиме dev.
- Поиск бесконечных циклов/рекурсии в последних правках.
- [ ] Проверка
array.map()и других методов на возврат значений. - [ ] Перенос больших пакетов в
devDependencies. - [ ] Полная очистка
node_modulesиnpm install. - Тест с нужной версией Node (через nvm).
Роль-based чек-лист:
- Разработчик: проверить код, запустить линтер, локальный запуск.
- DevOps: проверить образ сборки, CI-конфиг, доступную память.
- Тестировщик: прогнать интеграционные тесты и сценарии, требующие сборки.
Мини‑методология отладки (коротко)
- Репродуцируйте ошибку локально с логами.
- Откатите последние изменения, чтобы локализовать баг.
- По очереди исключайте подсистемы (исключать пакеты, временно отключать middleware).
- Пересоберите после каждой правки — фиксируйте, что меняет поведение.
Критерии приёмки
- Проект успешно собирается и запускается локально без появления ошибки.
- Сборка проходит в CI с теми же версиями Node и npm/yarn.
- Наличие автоматизированного теста, покрывающего сценарии, которые раньше приводили к ошибке.
Набор команд — шпаргалка
# Очистка и переустановка зависимостей (Windows):
rd /s /q node_modules
npm install
# macOS / Linux:
rm -rf node_modules package-lock.json
npm install
# nvm — установка и переключение версии Node:
nvm install 10.24.0
nvm use 10.24.0Совместимость и рекомендации по версиям
- Старые проекты на Create React App или старых версиях Next.js часто совместимы с Node 10.x/12.x — проверьте package.json, .nvmrc или CI.
- Современные проекты требуют Node 14+ или 16+; перед понижением версии удостоверьтесь, что другие библиотеки не сломаются.
Небольшой глоссарий
- NVM — менеджер версий Node, позволяет устанавливать и переключать версии Node.
- node_modules — папка, где npm/yarn устанавливают зависимости.
- devDependencies — зависимости, нужные только при разработке/сборке, а не в runtime.
Тестовые случаи для проверки исправления
- Локальная сборка:
npm run buildзавершается без ошибок. - Локальный запуск:
npm startилиnpm run devне падает и отвечает на запросы. - CI-пайплайн успешно проходит фазу сборки с теми же версиями Node и npm.
Заключение
Fatal JavaScript invalid size error 169220804 обычно указывает на проблему в коде или окружении. Начните с простых проверок (циклы, array.map), затем последовательно применяйте шаги: перенести тяжёлые пакеты в devDependencies, полностью переустановить зависимости и, при необходимости, переключиться на совместимую версию Node через NVM. Если после этого проблема остаётся — исследуйте нативные зависимости, сборку в контейнере и лимиты памяти.
Если у вас есть опыт решения этой ошибки в другом контексте — опишите, пожалуйста, ваш сценарий (версия Node, OS, CI, используемые пакеты) — это поможет другим разработчикам быстрее найти причину.