FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

Ошибка при запуске проекта из консоли.
[http://i.piccy.info/i9/a226986a1d54a28af03dd2fac4380022/1581545351/268862/1358686/nodeoptions.jpg](в консоли выглядит так)
На нескольких ресурсах такой ответ - “установить переменную окружения NODE_OPTIONS=”–max-old-space-size=2048""
Вопросы:

  1. где именно, в каком файле ее установить? в файле проекта? или где-то в node.js?(если да, то где?)
  2. почему это случилось и с чем это связано?

Причина- nodejs не хватило места под данные в выделенной для него памяти. Переменная которую тебе рекоммендуют изменить изменяет лимит выделенной памяти для nodejs.

Переменную нужно менять прямо перед запуском твоей комманды (как я понял, ты запускаешь ng build).

Вот тут куча примеров (для другой переменной, но механика у них одинаковая), посмотри что для тебя сработает

Там для продакшн ответы собраны, я запускаю build dev. Оно точно подойдет? Например, это http://joxi.ru/J2bDepgS0ORVYr - такая команда из консоли - точно увеличит пространство для памяти node.js?

Или это? node --max_old_space_size = 8192 node_modules / @ angular / cli / bin / ng serve --prod (запустить в консоли)

Там собраны ответы как изменить переменную окружения которая сингнализирует node о режиме работы ( продакшен или девелопмент).

В твоем случае тоже нужно изменить переменную окружения, но которая сигнализирует о макисмальном количестве памяти, выделяемого nodejs процессу.

Способы изменения переменной зависят от твоей операционной системы и того в каком shell-е ты запускаешь команду и как именно запускаешь команду (npm run, nodejs …).

Скорее всего этот способ сработает для тебя, но тебе нужно понять свою ситуацию и найти подходящий способ среди ответов по той ссылке что я кинул в ответе выше.

$env:NODE_OPTIONS="--max-old-space-size=4096" ; ng build

как-то так получаеться [http://i.piccy.info/i9/fb3155d2b4c7d8dc9c9ecf5e8e987159/1581593662/50275/1358686/nodeoptions.jpg](http://ссылка на результат)
Последняя команда - место для памяти увеличилось? Или ничего не сработало? (потому что в консоли нет ничего после выполнения команды)

Запускай мой код в виндовой powershell

Сейчас ты запускаешь в чем-то юник подобном. Там переменные окружения задаются иным образом

если в cmd под правами администратора - то не распознает команду
[http://i.piccy.info/i9/eb6b5461a35636721f16d1102de9562a/1581597409/101034/1358686/error_npm.jpg](http://ссылка на картинку)

Или неправильно выполняю команду?

Ты запускаешь команду в cmd, это не powershell. Попробуй без аминских прав запустить powershell https://www.digitalcitizen.life/ways-launch-powershell-windows-admin

У меня нет сейчас винды под рукой. Вечером смогу посмотреть на домашнем компьютере и дать точные инструкции.

запустила через powershell, но что то никак не отреагировало на эту команду

И после этой команды - запускаю проект еще раз - и также та же ошибка. Падает на одном и том же этапе
error-run

Есть ли смысл обновлять версию npm? (сейчас 6). Но этот warning вылетает при запуске любого проекта всегда и проекты другие запускались.

Такое первый раз (раньше большие проекты нормально запускались).
Это запускаю сборку PWA командой npm run pwa. Возможно именно в этом pwa что-то не так… (в готовый проект добавила скрипты и файлы для того чтобы сделать его pwa)

ок спасибо

Установку переменной окружения нужно делать прямо переда запуском команды в одну строку.

Команда идет после ;

$env:NODE_OPTIONS="--max-old-space-size=4096" ; ng build

Замени ng build на свою команду.

Запускать нужно в том же терминале где ты менаешь переменную окружения. Переменная живет “привязанная” к сессии терминала. Поэтому менять ее в одном терминале и ожидать изменения в другом не сработает.

1 лайк

спасибо, сработало