node · npm
Le message
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Ce que cela veut dire
Le tas de V8 a atteint son plafond et node a renoncé de lui-même : le système d'exploitation ne l'a pas tué, node a jugé qu'il ne pouvait plus croître et s'est arrêté. La cause est une grosse vérification de types ou un gros bundle, un build avec source maps sur un grand projet, ou du code qui fuit, par exemple en accumulant tout dans un tableau. export NODE_OPTIONS=--max-old-space-size=4096 relève le plafond à 4 Go et suffit souvent, mais la machine doit réellement disposer de cette mémoire ; si la limite d'un conteneur est plus basse, c'est le système qui tue le processus, ce qui apparaît en code de sortie 137. Si le nombre doit sans cesse grandir, la cause est une fuite et non la limite.
Le correctif
export NODE_OPTIONS=--max-old-space-size=4096- Émis par
- node
- npm
- 20
Avec npm, la cause tient dans la première ligne code XXXX et non dans les six dernières lignes npm ERR!, et quand la panne vient de l'arbre de dépendances ou d'une compilation native plutôt que de votre code, supprimer node_modules puis réinstaller en règle environ la moitié.
Lire un message d’erreur
- Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
- S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
- Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
- La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
- Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.
Questions fréquentes
Q. Que veut dire « FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory » ?
Le tas de V8 a atteint son plafond et node a renoncé de lui-même : le système d'exploitation ne l'a pas tué, node a jugé qu'il ne pouvait plus croître et s'est arrêté. La cause est une grosse vérification de types ou un gros bundle, un build avec source maps sur un grand projet, ou du code qui fuit, par exemple en accumulant tout dans un tableau. export NODE_OPTIONS=--max-old-space-size=4096 relève le plafond à 4 Go et suffit souvent, mais la machine doit réellement disposer de cette mémoire ; si la limite d'un conteneur est plus basse, c'est le système qui tue le processus, ce qui apparaît en code de sortie 137. Si le nombre doit sans cesse grandir, la cause est une fuite et non la limite.
Q. Comment le corriger ?
export NODE_OPTIONS=--max-old-space-size=4096 — avant de le lancer, vérifiez plus haut ce que cette commande jette.
Q. Quel outil émet cela ?
node. Cela relève de npm, et le message compte 13 mots.