node · npm
El mensaje
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Qué significa
El montón de V8 llegó a su techo y node se rindió por sí mismo: el sistema operativo no lo mató, node decidió que no podía crecer más y se detuvo. La causa es una comprobación de tipos o un empaquetado grande, una compilación con source maps en un proyecto grande, o código con fugas como acumular todo en un array. export NODE_OPTIONS=--max-old-space-size=4096 sube el techo a 4 GB y a menudo basta, pero la máquina tiene que tener de verdad esa RAM, y si el límite de un contenedor es menor, el sistema operativo mata el proceso, lo que aparece como código de salida 137. Si el número tiene que crecer una y otra vez, la causa es una fuga y no el límite.
El arreglo
export NODE_OPTIONS=--max-old-space-size=4096- Lo imprime
- node
- npm
- 20
En npm la causa está en la primera línea code XXXX y no en las seis últimas líneas npm ERR!, y cuando el fallo viene del árbol de dependencias o de una compilación nativa y no de tu código, borrar node_modules y reinstalar resuelve la mitad de los casos.
Cómo leer un mensaje de error
- Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
- Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
- Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
- La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
- Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.
Preguntas frecuentes
Q. ¿Qué significa «FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory»?
El montón de V8 llegó a su techo y node se rindió por sí mismo: el sistema operativo no lo mató, node decidió que no podía crecer más y se detuvo. La causa es una comprobación de tipos o un empaquetado grande, una compilación con source maps en un proyecto grande, o código con fugas como acumular todo en un array. export NODE_OPTIONS=--max-old-space-size=4096 sube el techo a 4 GB y a menudo basta, pero la máquina tiene que tener de verdad esa RAM, y si el límite de un contenedor es menor, el sistema operativo mata el proceso, lo que aparece como código de salida 137. Si el número tiene que crecer una y otra vez, la causa es una fuga y no el límite.
Q. ¿Cómo se arregla?
export NODE_OPTIONS=--max-old-space-size=4096 — antes de ejecutarlo, mira arriba qué descarta este comando.
Q. ¿Qué herramienta lo imprime?
node. Está en npm y el mensaje tiene 13 palabras.