


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте это решение, указанное в старом сообщении на форуме: 3.7.0: сборка iOS с --prod не работает
Открыть node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js
Измените первую строку с:
#!/usr/bin/env node
к
#!/usr/bin/env node --max-old-space-size=4096
Попробуйте значения 1024 и 2048, но для относительно большого приложения вам может потребоваться 4096.
Вы не должны изменять скрипты внутри node_modules.
У меня была такая же проблема на сервере CentOS 7, но это решило мою проблему:
node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
Где X = (2048 or 4096 or 8192 o..) - это значение памяти.
после изменения значения x .. ошибка остается прежней
Если ошибка не исчезнет, продолжайте увеличивать размер до тех пор, пока не будет достаточно памяти для обработки, что в конечном итоге предотвратит ошибку. Единственный раз, когда я обнаружил, что не могу обойти эту ошибку, был ng serve и файл массивный .js, указанный в разделе scriptsangular.json, который необходимо было загрузить в память.
могу ли я установить значение X больше 8192? У меня 32гб оперативной памяти
для меня указание max-old-space-size в командной строке НЕ работало. Это МОЖЕТ быть взаимодействие с узлом на основе nvm? вместо этого внутри сценария bash я использовал 'NODE_OPTIONS = "- max-old-space-size = 2048" node $ NG build --prod --progress = false', который работал, в отличие от 'node --max-old -space-size = 2048 $ NG build --prod --progress = false ', но этого не произошло. Я до сих пор не знаю почему.
если вы запустите это внутри докера и получите ошибку KILLED, также увеличьте объем оперативной памяти, выделенной для движка докера.
Для меня это была проблема с пакетом Firebase.
Добавьте только "@ firebase / database": "0.2.1" для вашего файла package.json. Переустановите node_modules, и он работает.
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, улучшает его долгосрочную ценность.
В моем случае я решил эту проблему, установив Node.js версии 12.10.0.
То же самое. Я только что поменял версию и работает.
Для контекста, узел 12 имеет другую стратегию управления кучей, которая основана на доступной памяти, а не на значениях по умолчанию. Подробнее здесь: foundation.nodejs.org/announcements/2019/04/24/…
У меня больше ничего не работало, вот и все. Большое спасибо :)
Мы обновились до узла 12, и ошибка исчезла, это проще, чем управлять кучей на узле 10.
Это устранило проблему. Это следует принять как ответ
@NitishKumar Я все еще получаю сообщение об ошибке с Node 12 / пожимаю плечами. Принято должно быть то, что лучше всего решает вариант использования OP - хотя вы бы надеялись, что они выберут один из ответов на этом этапе.
этот работал только для меня, но в угловом проекте.
@DerekDowling Wayback вызывает неработающую ссылку: web.archive.org/web/20191103115941/https://…
Я использую узел 12.18.3 и получил эту ошибку.
Я использовал узел 11.15.0, при сборке получилось «Ошибка выделения - нехватка памяти JavaScript». После обновления до узла 12.10.0 (nvm install 12.10.0) все работает как шарм !!!
Запустите эту команду в папке вашего проекта. Используйте обслуживать вместо build
node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve --prod --port=4202
Я получил такое же сообщение об ошибке, когда выполнил следующие инструкции в Visual Studio Code. Но я могу успешно построить, если выполняю то же самое в командной строке Windows.
npm install -g increase-memory-limit
increase-memory-limit
set NODE_OPTIONS=--max_old_space_size=4096
ng build -c deploy --build-optimizer --aot --prod --sourceMap
Проверьте название вашей папки. Если в имени вашей папки есть пробелы, возникнут проблемы такого рода. Переименовать без пробелов.
Я удалил существующий модуль Node.js и выполнил следующие команды, чтобы исправить свою проблему:
npm install -all
npm audit fix
Для общего ответа, не связанного с Angular, для тех, кто задает этот вопрос от Google:
Каждый раз, когда вы сталкиваетесь с этой ошибкой, это, вероятно, связано с утечкой памяти или разницей между тем, как Node.js <= 10 и Node.js> 10 управляют памятью.
Обычно простое увеличение объема памяти, выделенной для Node.js, позволяет вашей программе запускать но на самом деле не может решить реальную проблему, а объем памяти, используемый процессом node, может превышать объем новой памяти, которую вы выделяете. Я бы посоветовал профилировать использование памяти в вашем процессе Node.js, когда он запускается или обновляется до Node.js> 10.
У меня была утечка памяти. Вот отличная статья об отладке утечек памяти в Node.js.
Тем не менее, чтобы увеличить объем памяти в терминале, где вы запускаете процесс Node.js:
export NODE_OPTIONS = "--max-old-space-size=8192"
где значения max-old-space-size могут быть: [2048, 4096, 8192, 16384] и т. д.
Еще примеры для большей ясности:
export NODE_OPTIONS = "--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS = "--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS = "--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS = "--max-old-space-size=8192" # Increase to 8 GB
# and so on...
# formula:
export NODE_OPTIONS = "--max-old-space-size=(X * 1024)" # Increase to X GB
# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes (MB) you have available.
К вашему сведению, значение по умолчанию - 512 МБ. Вам не нужно сразу переходить к 10-кратному увеличению, вы можете сначала попробовать что-то между 512 и 5120.
Спасибо, это работает для всех типов приложений, имеющих проблемы с памятью.
Сразу хочу отметить - это не всегда свидетельствует об утечке памяти. Возможно, используемая вами библиотека использует немного больше памяти, чем раньше. Для нас next.js начал сбой нашего приложения из-за функции быстрого обновления.
@DanielCooke, какое значение вы использовали для следующего js? не могли бы вы поделиться, какое решение вы использовали для этой проблемы, со следующими js
@MSD Мы, кажется, обойдемся с 4096 max-old-space-size со следующим> 9.6. Для производственных сборок и разработчиков
@DanielCooke спасибо ... пробовал, что у меня не работает
Вот документы nodejs.org/api/…, и ничего не говорит о том, что должны быть шаги integer * 1024.
@MikhailVasin Смотрите самые последние комментарии в моем ответе. Я знаю, что это не так. Я просто поместил это там для тех, кто хочет увеличить общую память в ГБ.
По некоторым причинам все предыдущие ответы не работали для меня. Я сделал следующее, чтобы исправить свою проблему:
node_modulesnpm installшаг 2 не является обязательным. Я попробовал верхнее решение, и оно сработало для меня и без шага 2.
ну, возможно, вам не понадобится шаг 2, я поделился только тем, что сработало для меня :)
Если это происходит при запуске приложения React в Visual Studio Code, проверьте свои propTypes, undefined Proptypes приводит к той же проблеме.
Заменить строку
"start": "ng serve -o --port 4300 --configuration=en" с
"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"
ЗАМЕТКА:
порт - 4300 не является постоянным, зависит от того, какой порт вы выбираете.
--max_old_space_size = 5096 тоже не постоянный; любое значение 1024,2048,4096 и т. д.
Этот сработал для меня. Установка NODE_OPTIONS из командной строки не сработала, я предполагаю, потому что Visual Studio использует новый процесс или что-то в этом роде. Жесткое кодирование изменений в моем блоке package.json scripts решило эту проблему.
Для меня я получил эту ошибку, потому что я потерял доступ к пути вывода для папки dist, установленной в моем файле angular.json. После того, как я повторно подключился к удаленному пути с обновленными учетными данными, ошибка исчезла.
У меня такая же ошибка, когда я выполняю команду ng build в Visual Studio Code. Но я могу успешно выполнить сборку, если выполняю то же самое в командной строке Windows в следующей последовательности.
Шаг 1.
set NODE_OPTIONS=--max_old_space_size=4096
Шаг 2.
ng build
Спасибо, что мне очень помогло, просто переключил мой терминал
В моем случае это был рекурсия, который заставлял React использовать всю память.
Это произошло, когда я реорганизовал свой код и не заметил этого.
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
В других приложениях Node.js это может выглядеть так:
const someFunction = () => {
...
someFunction();
...
}
Почему возникла проблема? <> </> должно быть действительным в React вместо использования <React.Fragment>, верно?
@Codehiker Да, это новый синтаксис в React 16
Рекурсия состоит в том, что SumComponent содержит SumComponent (который содержит SumComponent, который содержит SumComponent ...)
Добавление параметра --build-optimizer решило проблему в моем случае:
node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer
Я не уверен, почему добавление только --build-optimizer решает проблему, но в соответствии с документацией Angular его следует использовать с включенной компиляцией с опережением времени (AOT), поэтому обновленная команда должна быть такой, как показано ниже:
--build-optimizer=true --aot=true
Для меня проблема заключалась в наличии дополнительной папки node_modules, которую я переименовал в node_modules_old, и запуске npm install для создания нового node_modules. Каким-то образом сборка, должно быть, все еще собирала папку node_modules_old, поэтому я переместил node_modules_old из каталога, чтобы исправить проблему.
Пожалуйста, проверьте свою версию Node.js:
node -vЕсли это что-то из 10.1.1, вам необходимо обновить версию Node.js корневого уровня с помощью следующих команд:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
source ~/.nvm/nvm.sh
nvm ls
nvm install 12.18.1После этого перезапустите терминал или Visual Studio.
Работает 100 $.
Для пользователей Ionic добавьте приведенный ниже код в свой package.json.
"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",на самом деле это работает, если вы создаете сеть через app-scripts, но если вы создаете Android или скрипт, например ionic cordova build android, как?
#!/usr/bin/env node --max-old-space-size=4096 в файле ionic-app-scripts.js не работал.
Изменение node_modules / .bin / ionic-app-scripts.cmd путем добавления
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=4096 "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
)
наконец-то сработало.
Еще один ответ, не относящийся к Angular (я столкнулся с той же проблемой при создании приложения React на AWS Amplify).
Как упоминал Эммануэль, похоже, что это происходит из-за разницы в способе обработки памяти в Node.js v10 и Node.js v12.
Пробовал увеличить память безрезультатно. Но использование Node.js v12 сделало это.
Проверьте, как можно добавить nvm use $VERSION_NODE_12 в настройки сборки как объяснил Ричард
frontend: phases: preBuild: commands: - nvm use $VERSION_NODE_12 - npm ci build: commands: - nvm use $VERSION_NODE_12 - node -v - npm run-script build
Я думаю, есть много способов достичь этой ошибки!
На моей стороне у меня в package.json была петля. Проект A зависел от проекта B, который зависел от проекта A.
Иногда простота является ключом к успеху. Найдите while (i <= 10000) {} без увеличения i в вашем коде;)
Эта проблема исчезла после того, как я обновил все свои библиотеки, такие как Node.js, TypeScript, Пряжа, npm и т. д. Для моего проекта.
Просто введите это в терминал:
export NODE_OPTIONS = "--max-old-space-size=8192"
Ошибка возникает, когда вы превышаете максимальный объем памяти по умолчанию, разрешенный для Node.js. Все это увеличивает максимально допустимую память.
Это решение, если вы работаете с оболочкой
Обновление с Node.js 12 до Node.js 14 решило проблему для меня.
Обновлять
Теперь доступен Node.js 16, и я рекомендую обновить его до последней доступной версии Node.js.
Для меня у меня была синтаксическая ошибка (которая не отображалась) и вызвала эту ошибку.
Я была такая же проблема. Спасибо!
В моем случае забыли убрать запятую в конце ngClass. Надеюсь, это может кому-то помочь.
У меня аналогичная проблема, когда я запускаю angular 'ng serve':
"FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory"
В моем случае я обнаружил, что мое приложение Angular использует отложенную загрузку. Один модуль уже был импортирован в сам модуль маршрута, но кто-то также импортировал его в модуль приложения, что вызвало рекурсивную (?) Загрузку.
Это вызывает нехватку памяти.
Просто запустите эту команду:
export NODE_OPTIONS = "--max-old-space-size=8192"
Вместо использования ng build я выполнил следующую команду в терминале, чтобы исправить эту проблему.
node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
Тогда сделайте ng serve.
Так выглядит мой терминал
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS D:\ProjectPath\Project1> node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
--prod устарел, используйте вместо него --configuration production.
Для общего ответа JavaScript, не относящегося к Angular, для тех, кто задает этот вопрос от Google и хочет исправить это в вашем Dockerfile (замените 6144 объемом памяти в мегабайтах, который вы хотите выделить).
Моя реализация работала в Node.js v14.1.0, выполняемом Docker версии 20.10.5, сборка 55c4c88 с использованием DockerOperator в воздушный поток v2.0.1).
FROM node:14.1.0
# Create app directory
WORKDIR /tmp/dockerspace/
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
CMD node --max-old-space-size=6144 app.js
Если вы разрабатываете для Windows и столкнулись с этой проблемой при публикации, обновите Node.js с помощью официальный сайт.
Обработка использования памяти увеличивается с каждой новой версией Node.js, хотя я не нашел точных цифр того, что это за увеличение.
Это было единственное решение, которое сработало для меня. Мне потребовались целые выходные и больше, чтобы решить эту проблему.
Я столкнулся с той же проблемой на Angular. Затем я написал
"serve": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve"
этот скрипт к скриптам package.json и для меня эта проблема решена.
И запустите проект эту команду:
npm run serve
Это почти непонятно. Ты можешь починить это?
Прежде всего, вы должны добавить скрипт в блок скриптов в package.json, в конце концов, вы должны запустить проект с помощью этой команды: npm run serve - @PeterSmith
Я использую последнюю стабильную версию Node.js v-14.17. У меня была такая же проблема с новыми проектами Angular Ionic, и я безуспешно пробовал большинство предыдущих ответов.
Наконец, после обновления до Node.js 16.4.2 LTS эта проблема была исправлена.
В моем случае ошибка была вызвана неправильным использованием условия в цикле for .... Вместо того:
for (let t = startNo; t <= endNo; t++) {}
Я имел:
for (let t = startNo; endNo; t++) {}
Окна
Из панели управления перейдите в Система → Расширенные системные настройки → Переменные среды → Новый (пользователь или система)
Или это можно сделать в PowerShell с помощью:
$env:NODE_OPTIONS = "--max-old-space-size=8192"
При необходимости вы также можете увеличить это число. Мы видели, что людям нужно увеличить это до 14 ГБ для некоторых более крупных проектов!
Linux / macOS
export NODE_OPTIONS=--max-old-space-size=8192
У меня nodeJS 10.15.3, я пробовал решение NODE-OPTIONS в Windows 10, но оно не сработало. Есть ли другие решения?
@VenomBerry, не могли бы вы запустить WSL? Зачем причинять себе вред, запуская эти вещи в стандартных окнах без подсистемы Linux.
отметьте этот ответ: stackoverflow.com/questions/38558989/node-js-heap-out-of-mem ory /…