Solución para: “FATAL ERROR: JavaScript heap out of memory”.

by | Oct 12, 2020 | Angular

“FATAL ERROR: JavaScript heap out of memory”

Es un error que se genera al momento de iniciar el servidor de Angular (ng serve) debido a la cantidad insuficiente de memoria asignada para una aplicación. Por defecto, Angular nos proporciona un limite de 1500mb, sin embargo, cuando se trabaja con aplicaciones bastante grandes, por ejemplo, alguna aplicación empresarial, es muy común que pueda aparecer este error de la siguiente manera:

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

La solución a este error es aumentar el límite de memoria que se asigna a la aplicación, para lograr esto, existen un par de opciones que nos proporciona node.
Primer opción (Solución para arrancar la aplicación de manera local): Arrancar la aplicación con el comando perteneciente a node:

node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve

Lo cual aumentará el límite de memoria asignada de 1500mb a 8048mb.

Segunda opción (Solución para crear un build de producción): Asignar el aumento del límite de memoria como una variable de entorno, de la siguiente manera:

SET NODE_OPTIONS=--max_old_space_size=8048

Si quieres conocer más acerca de las variables de entorno en Angular, da clic aquí.

NOTA: para Angular 7, es necesario también aumentar la memoria asignada para los budgets  en el archivo angular.json. Por defecto se muestran de la siguiente manera:


"budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "11mb"
                }
]

Solución alterna, solo para usuarios WINDOWS:
Si eres un usuario Windows y te encuentras con este problema, solo debes dirigirte a la ruta:

C:\Users\TuNombreDeUsuario\%AppData%\Roaming\npm <code>

 

y pegar el siguiente código dentro de ng.cmd:

@IF EXIST "%~dp0\node.exe" (
    "%~dp0\node.exe" --max_old_space_size=8048 "%~dp0\node_modules\@angular\cli\bin\ng" %* 
) ELSE (
    @SETLOCAL 
    @SET PATHEXT=%PATHEXT:;.JS;=;% 
    node --max_old_space_size=8048 "%~dp0\node_modules\@angular\cli\bin\ng" %* 
)

Entradas relacionadas

Integración de Paypal en Angular

Para realizar la implementación de Paypal con Angular usaremos la librería ngx-paypal. Lo primero que haremos será instalar la librería. npm install ngx-paypal --save Una vez instalada la librería...

read more

Descubre en 5 minutos las áreas de tu empresa puedes mejorar