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

JavascriptIonic FrameworkIonic3Ionic Serve

Javascript Problem Overview


When I run an Ionic 3 project using the ionic serve command, then I am getting this error:

Screenshot of FATAL ERROR: ineffective mark-compacts near heap limit Allocation failed - JavaScript

Javascript Solutions


Solution 1 - Javascript

For a non-Angular general answer for those who land on this question from Google:

Every time you face this error it’s probably because of a memory leak or difference between how Node.js <= 10 and Node.js > 10 manage memory.

Usually just increasing the memory allocated to Node.js will allow your program to run but may not actually solve the real problem and the memory used by the node process could still exceed the new memory you allocate. I'd advise profiling memory usage in your Node.js process when it starts running or updating to Node.js > 10.

I had a memory leak. Here is a great article on debugging memory leaks in Node.js.

That said, to increase the memory, in the terminal where you run your Node.js process:

export NODE_OPTIONS="--max-old-space-size=8192"

where values of max-old-space-size can be: [2048, 4096, 8192, 16384] etc

More examples for further clarity:

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.

See the current value of max-old-space-size (in MB)

To see the current (not exact but very close) value of max-old-space-size (in MB), run in your terminal

node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'

Solution 2 - Javascript

In my case, I fixed this problem by installing Node.js, version 12.10.0.

Solution 3 - Javascript

I had the same issue on CentOS server 7, but this solved my problem:

node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod

Where X = (2048 or 4096 or 8192 o..) is the value of memory.

Solution 4 - Javascript

Just type this in the terminal:

export NODE_OPTIONS="--max-old-space-size=8192"

The error occurs when you exceed the default maximum memory allowed for Node.js. All this does is increase the maximum memory allowed.

Solution 5 - Javascript

I got the same error when I execute ng build command in Visual Studio Code. But I can build successfully when I execute the same thing on the Windows command line in the following sequence.

Step 1.

set NODE_OPTIONS=--max_old_space_size=4096

Step 2.

ng build

Solution 6 - Javascript

Try this solution which was pointed out in an old message on the forum: 3.7.0: iOS build with --prod not working

Open node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js

Change the first line from:

#!/usr/bin/env node

to

#!/usr/bin/env node --max-old-space-size=4096

Try values 1024 and 2048, but for a relatively large app you may need 4096.

Solution 7 - Javascript

Windows

From the control panel go to SystemAdvanced system settingsEnvironment VariablesNew (user or system)

mceclip0.png

Or this can be done in PowerShell with:

$env:NODE_OPTIONS="--max-old-space-size=8192"

You can also increase this number, if necessary. We've seen folks need to increase this up to 14 GB for some larger projects!

Linux/macOS

export NODE_OPTIONS=--max-old-space-size=8192

Solution 8 - Javascript

In my case it was a recursion that was causing React to use up all memory.

This happened when I was refactoring my code and didn't notice this.

const SumComponent = () => {
  return (
    <>
      <SumComponent />
    </>
  )
}

In other Node.js applications this might look like:

const someFunction = () => {
  ...
  someFunction();
  ...
}

Solution 9 - Javascript

I got the same error message when I executed the following statements in Visual Studio Code. But I can build successfully when I execute the same thing in on the Windows command line.

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

Solution 10 - Javascript

Updating from Node.js 12 to Node.js 14 solved the problem for me.


Update
Now Node.js 16 is available, and I recommend updating to the latest available version of Node.js.

Solution 11 - Javascript

For some reasons all the previous answers didn't really work for me. I did the following to fix my issue:

  1. I had to first delete the node_modules folder
  2. reinstall Node.js on my PC and
  3. then npm install

Solution 12 - Javascript

node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true

Solution 13 - Javascript

Adding parameter --build-optimizer resolved the issue in my case:

node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer

I am not sure why adding only --build-optimizer solves the issue, but as per the Angular documentation it should be used with ahead-of-time (AOT) compilation enabled, so the updated command should be like below:

--build-optimizer=true --aot=true

Angular build documentation

Solution 14 - Javascript

Run this command in your project folder. Use serve instead of build

node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve  --prod --port=4202

Solution 15 - Javascript

Replace the line

"start": "ng serve -o --port 4300 --configuration=en" with

"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"

NOTE:

  1. port--4300 is not constant depends upon which port you selects.

  2. --max_old_space_size=5096 too not constant; any value 1024,2048,4096 etc

Solution 16 - Javascript

For me, I had a syntax error (which didn't show up) and caused this error.

Solution 17 - Javascript

  1. export NODE_OPTIONS="--max-old-space-size=6144" #it will increase to 6gb.

-------If Not Solved try this 2nd step------------- 2) Just update your node version to the latest one will solve this issue.

-------If Not Solved try this 3rd step------------- 3)Just run this command in your windows terminal. set NODE_OPTIONS=--max_old_space_size=4096

Solution 18 - Javascript

Instead of using ng build, I have executed below command in terminal to fix this issue.

 node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

Then do ng serve.

This is how my terminal look like

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

Solution 19 - Javascript

I faced the same problem on Angular. Then I wrote

"serve": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve"

this script to package.json scripts and for me this problem solved.

And run project this command:

npm run serve

Solution 20 - Javascript

For me it was a problem with a Firebase package.

Only add "@firebase/database": "0.2.1" for your package.json file. Reinstall node_modules and it works.

Solution 21 - Javascript

I deleted the existing Node.js module and ran the below commands to fix my issue:

npm install -all
npm audit fix

Solution 22 - Javascript

For me, the issue was having an extra node_modules folder that I renamed to node_modules_old and running an npm install to generate a fresh node_modules. Somehow the build must have still been picking up the node_modules_old folder, so I moved node_modules_old out of the directory to fix the issue.

Solution 23 - Javascript

Please check your Node.js version:

node -v

If it’s 10.1.1 something, then you need to update your root level Node.js version via the below commands:

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

Once done, please restart your terminal or Visual Studio.

It's working 100$.

For Ionic users, please add the below code in your package.json

For Ionic user

 "ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",

Solution 24 - Javascript

Another non-Angular answer (I was facing the same issue building a React application on AWS Amplify).

As mentioned by Emmanuel, it seems that it comes from the difference in the way memory is handled by Node.js v10 vs. Node.js v12.

I tried to increase memory with no avail. But using Node.js v12 did it.

Check how you can add nvm use $VERSION_NODE_12 to your build settings as explained by richard

> ~~~ > frontend: > phases: > preBuild: > commands: > - nvm use $VERSION_NODE_12 > - npm ci > build: > commands: > - nvm use $VERSION_NODE_12 > - node -v > - npm run-script build

Solution 25 - Javascript

Just run this command:

export NODE_OPTIONS="--max-old-space-size=8192"

Solution 26 - Javascript

For a non-Angular general JavaScript answer for those who land on this question from Google and want to fix this in your Dockerfile (replace 6144 with the amount of memory in megabytes which you want to allocate).

My implementation was working in Node.js v14.1.0 being executed by Docker version 20.10.5, build 55c4c88 using DockerOperator in airflow 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

Solution 27 - Javascript

If you are developing on Windows and running into this issue while publishing, upgrade Node.js through the official site.

The memory usage handling does increase with each newer version of Node.js, although I did not find exact numbers on what the increase is.

That was the only solution that worked for me. It took a whole weekend and more for me to solve this issue.

Solution 28 - Javascript

Run this command:

export NODE_OPTIONS="--max-old-space-size=2048"

To check how much you have already:

> node
> v8.getHeapStatistics()
{
  total_heap_size: 6049792,
  total_heap_size_executable: 524288,
  total_physical_size: 5477720,
  total_available_size: 1094444024,
  used_heap_size: 4141728,
  heap_size_limit: 1098907648,
  malloced_memory: 8192,
  peak_malloced_memory: 582752,
  does_zap_garbage: 0,
  number_of_native_contexts: 2,
  number_of_detached_contexts: 0
}

and then heap_size_limit: 1098907648

Solution 29 - Javascript

Check your folder name. If your folder name has spaces, these kind of issues will be generated. Rename without spaces.

Solution 30 - Javascript

If this happening on running a React application in Visual Studio Code, please check your propTypes, undefined Proptypes leads to the same issue.

Solution 31 - Javascript

For me I got this error because I lost access to the output path for the dist folder set in my angular.json file. After I reconnected to the remote path with updated credentials the error went away.

Solution 32 - Javascript

#!/usr/bin/env node --max-old-space-size=4096 in the ionic-app-scripts.js file didn’t work.

Modifying node_modules/.bin/ionic-app-scripts.cmd by adding

@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" %*
)

finally worked.

Solution 33 - Javascript

For me, I encountered this problem when running ESLint, the Prettier fix, and formatting with a build directory in my React project. After removing it, all things worked.

I guess this is because there are too many files.

Solution 34 - Javascript

I guess there are plenty of ways to reach this error!

On my side, I had a loop in my package.json. Project A had a dependency on project B, that had a dependency on project A.

Solution 35 - Javascript

This issue was gone after I've updated my all libraries like, Node.js, TypeScript, Yarn, npm, etc. for my project.

Solution 36 - Javascript

I have a similar issue when I run angular 'ng serve':

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

In my case I found my Angular application used lazy loading. One module was already imported to itself route module, but someone made an importing it to app module too which caused the recursive(?) loading.

This causes the out of memory.

Solution 37 - Javascript

I am using the latest stable version of Node.js v-14.17. I was having the same issue with new Angular Ionic projects and tried most of the previous answers without success.

Finally after upgrading to Node.js 16.4.2 LTS, it fixed this issue.

Solution 38 - Javascript

In my case the error was caused by improper use of a condition in a for ... loop. Instead of:

for (let t = startNo; t <= endNo; t++) {}

I had:

for (let t = startNo; endNo; t++) {}

Solution 39 - Javascript

I had the same problem, in my case after of install aws-sdk, not the memory space. I resolved it changing the import to require like this post:

https://stackoverflow.com/questions/64135036/aws-sdk-in-node-app-after-deploying-does-not-start

Solution 40 - Javascript

Sometimes simplicity is the key to success. Search for while (i <= 10000) {} without increasing i in your code ;)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHimanshu ShekharView Question on Stackoverflow
Solution 1 - JavascriptEmmanuel N KView Answer on Stackoverflow
Solution 2 - JavascriptGermán AyalaView Answer on Stackoverflow
Solution 3 - JavascriptHakim CHRIFI ALAOUIView Answer on Stackoverflow
Solution 4 - JavascriptMattView Answer on Stackoverflow
Solution 5 - JavascriptSushrut Singh SisodiyaView Answer on Stackoverflow
Solution 6 - JavascriptrunnerpaulView Answer on Stackoverflow
Solution 7 - JavascriptMubarak PatelView Answer on Stackoverflow
Solution 8 - JavascriptRustyView Answer on Stackoverflow
Solution 9 - JavascriptheinelsView Answer on Stackoverflow
Solution 10 - JavascriptHakan FıstıkView Answer on Stackoverflow
Solution 11 - JavascriptsambayourView Answer on Stackoverflow
Solution 12 - JavascriptMohammad lockmanView Answer on Stackoverflow
Solution 13 - JavascriptAkshay NaikView Answer on Stackoverflow
Solution 14 - JavascriptDeepu ReghunathView Answer on Stackoverflow
Solution 15 - JavascriptSarath MohandasView Answer on Stackoverflow
Solution 16 - JavascriptJoshuaRDBrownView Answer on Stackoverflow
Solution 17 - JavascriptMohamed ImranView Answer on Stackoverflow
Solution 18 - JavascriptR15View Answer on Stackoverflow
Solution 19 - JavascriptAli AlizadeView Answer on Stackoverflow
Solution 20 - JavascriptPol FernándezView Answer on Stackoverflow
Solution 21 - JavascriptPritiranjan SwainView Answer on Stackoverflow
Solution 22 - JavascriptbadjrView Answer on Stackoverflow
Solution 23 - JavascriptYogesh KumarView Answer on Stackoverflow
Solution 24 - JavascriptkartonnadeView Answer on Stackoverflow
Solution 25 - JavascriptManoj AlwisView Answer on Stackoverflow
Solution 26 - JavascriptimshethView Answer on Stackoverflow
Solution 27 - JavascriptnixishView Answer on Stackoverflow
Solution 28 - JavascriptAlanView Answer on Stackoverflow
Solution 29 - JavascriptRoney FrancisView Answer on Stackoverflow
Solution 30 - JavascriptkishorekumaruView Answer on Stackoverflow
Solution 31 - JavascriptjustTechView Answer on Stackoverflow
Solution 32 - JavascriptSubhamayView Answer on Stackoverflow
Solution 33 - JavascriptSeanView Answer on Stackoverflow
Solution 34 - JavascriptRemiView Answer on Stackoverflow
Solution 35 - JavascriptOguzhan KircaliView Answer on Stackoverflow
Solution 36 - JavascriptAlison NiuView Answer on Stackoverflow
Solution 37 - JavascriptVishal KumarView Answer on Stackoverflow
Solution 38 - JavascriptEggonView Answer on Stackoverflow
Solution 39 - JavascriptFredd HannayView Answer on Stackoverflow
Solution 40 - JavascriptMatthis KohliView Answer on Stackoverflow