Dépassement de la taille maximale de la pile d'appels lors de l'installation de npm

155

J'essaye de courir npm install, ceci est la sortie de la console:

npm ERR! Linux 4.8.0-27-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8

npm ERR! Maximum call stack size exceeded
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

et c'est le contenu de npm-debug.log:

113791 verbose stack RangeError: Maximum call stack size exceeded
113791 verbose stack     at Object.color (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/console-control-strings/index.js:115:32)
113791 verbose stack     at EventEmitter.log._format (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:252:51)
113791 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:138:24)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113792 verbose cwd /home/giorgi/AdMove/dev/web-advertiser-admove
113793 error Linux 4.8.0-27-generic
113794 error argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
113795 error node v6.9.1
113796 error npm  v3.10.8
113797 error Maximum call stack size exceeded
113798 error If you need help, you may report this error at:
113798 error     <https://github.com/npm/npm/issues>
113799 verbose exit [ 1, true ]

Supprimé node_modulesplusieurs fois et essayé de réinstaller. Je ne comprends pas quelle est la raison qui en est la cause et comment y remédier.

GROX13
la source
1
Tout d'abord, je vérifierais le lien des problèmes github pour des problèmes similaires et l'ajouterais s'il ne s'agit pas d'un problème connu. Aussi, pourquoi essayez-vous d'installer la v4.2.6? La dernière version actuelle est la v7.1.0 et la version stable recommandée est la v6.9.1. Effacez tout, essayez 6.9.1 et mettez à jour la question.
TheEnvironmentalist
1
La mise à jour vers la v6.9.1 a toujours la même erreur et la même question mise à jour. Merci quand même TheEnvironmentalist
GROX13
1
Quelques conseils par ici github.com/npm/npm/issues/10776
Boris Charpentier
dans mon cas, cela a été causé par une déclaration récursive dans package.json;)
Alberto S.
dans mon cas, cela a été causé parce que j'avais perdu la connexion Internet
RayJ_inSJ

Réponses:

98

La réponse de metzelder m'a aidé à résoudre le problème. cependant si vous exécutez la commande npm cache clean, elle vous donnera un message

À partir de npm @ 5, le cache npm se guérit automatiquement des problèmes de corruption et les données extraites du cache sont garanties valides

Ainsi, à partir de npm5, vous pouvez le faire en ajoutant un --forceindicateur à la commande.

La commande est donc:

npm cache clean --force
Djangodude
la source
145
J'espère que vous savez ce que vous faites.
CloudMeta
1
Quant à moi, j'avais déplacé le répertoire de travail actuel vers un autre dossier - il semble que ce soit mélangé npm. Supprimer node_modules et réinstaller a fait l'affaire
Philippe Hebert
10
@MetaGuru veuillez expliquer quelles sont les conséquences de l'exécution de cette commande ...
cdalxndr
3
@CTS_AE Je ne pense pas que l'équipe npm ait ajouté ce message comme une blague. Il doit y avoir une conséquence et quelqu'un doit l'expliquer.
cdalxndr
2
@cdalxndr Je disais que c'était laissé comme commentaire comme une blague / satire, car une citation directe de ce npmdernier n'ajoutait rien d'utile, mais plutôt un mème à ce stade. Vous pouvez en savoir plus sur la commande actuelle ici: docs.npmjs.com/cli-commands/cache.html il explique explicitement ce que fait la force; que tous les éléments du cache sont maintenant entièrement vérifiés pour leur intégrité, si quelque chose est corrompu, il s'auto-guérira, donc le cache doit toujours être dans un état approprié et jamais effacé à moins que vous n'essayiez de récupérer de l'espace disque, vous devrez donc ajouter --force. Remarque: peut varier selon la version.
CTS_AE
84

npm rebuild ça a résolu mon problème

YYY
la source
31
Quelqu'un peut-il expliquer cette réponse plus en détail? Pourquoi cela résout-il le problème?
Patrick Szalapski
3
supprimé package-lock.json et npm rebuild ont fait l'affaire pour moi
Meet Patel
dans mon cas, certains fichiers de mon dossier .npm ont été installés en tant que root. npm cache verify vous indique ce qui ne va pas.
kirenpillay
Cela a fait l'affaire. npm cache clean n'a pas fonctionné à cette occasion.
Shiva Naru le
43

Essayez de supprimer package-lock.jsonet le node-modulesdossier:

rm package-lock.json
rm -r node_modules
Марат Зимнуров
la source
14
Vous tuez le but de package-lock.json si vous le supprimez. Cela garantit que vos dépendances seront déterministes.
Eliseu Monar dos Santos
5
C'est vrai, mais si vous ne pouvez pas installer votre application sur une plate-forme différente, vous n'avez pas d'autre choix que de le faire.
Marc
19

J'ai eu le même problème avec npm install. Après de nombreuses recherches, j'ai découvert que la suppression de votre .npmrcfichier ou de son contenu (trouvé sur %USERPROFILE%/.npmrc) résoudra ce problème. Cela a fonctionné pour moi.

Arwa S k
la source
13
npm uninstall

npm cache clean --force

J'utilise ces deux méthodes mais cela n'a pas fonctionné. Après avoir supprimé les modules de nœuds et à nouveau installer npm, cela n'a plus fonctionné. Enfin, je supprime package-lock.json et crée un nouveau fichier package-lock.json après cela en utilisant

npm install

et d'accord !!!

Kerim Kuşcu
la source
5
La suppression du fichier package-lock.json l'a corrigé pour moi, merci!
Ryan Wilson
11

J'ai surmonté ce problème en procédant comme suit:

  • Supprimez tout le contenu des dépendances npm. Vous pouvez trouver l'emplacement d'installation par défaut en fonction de ce fil: https://stackoverflow.com/a/5926706/1850297

  • Avant d'exécuter la npm installcommande, je suggère d'exécuternpm cache clean --force

Metzelder
la source
Message de npm cache clean: "À partir de npm @ 5, le cache npm se guérit automatiquement des problèmes de corruption et les données extraites du cache sont garanties valides."
Ian Grainger
7

j'ai effacé

node_modules

puis réinstallé par

npm installer

Ça a marché pour moi

Umair Khalid
la source
2
assez drôle, j'ai dû redémarrer, mon ordinateur en plus de vos étapes pour que cela fonctionne, puisque je travaille avec wsl
Avshalom
7

Dans mon cas, mettez à jour vers la dernière version:

npm install -g npm

AvantContra
la source
5

Je viens de le faire npm rebuilda fonctionné comme du charme.

Gopi P
la source
3

npm cache clean renvoie le message ci-dessous

À partir de npm @ 5, le cache npm se guérit automatiquement des problèmes de corruption et les données extraites du cache sont garanties valides. Si vous voulez vous assurer que tout est cohérent, utilisez plutôt 'npm cache verify'. D'un autre côté, si vous déboguez un problème avec le programme d'installation, vous pouvez npm install --cache /tmp/empty-cacheutiliser un cache temporaire au lieu de détruire le cache réel.

si vous exécutez npm cache verify comme spécifié ci-dessus, il exécute en fait la vérification du cache et le garbage collection qui résout le problème

Cache vérifié et compressé (~ \ AppData \ Roaming \ npm-cache_cacache): Contenu vérifié: 6183 (447214684 octets) Contenu garbage-collecté: 16 (653745 octets) Entrées d'index: 9633

Synster
la source
C'était assez pour moi. npm cache verify a résolu le problème d'une manière que la suppression de node_modules n'a pas. (Et je n'allais pas détruire le cache ou package-lock.json). À peu près sûr que c'est un problème avec npm, cependant. Je ne vois pas pourquoi la vérification du cache npm changerait quoi que ce soit si elle s'auto-guérissait vraiment.
Stuart Watt
3

Ce problème peut également se produire si vous essayez d'installer un package qui n'existe pas ou si vous essayez d'installer une version qui n'existe pas.

Melchia
la source
2

Vous désinstallez le package npm et forcez le nettoyage du cache, fermez le terminal et réinstallez le package quel qu'il soit.

$sudo npm uninstall <package - name>
$sudo npm cache clean --force

Puis redémarrez le terminal et vérifiez

Ne fonctionne toujours pas, mettez à niveau npm et node vers la dernière version

Gajendra KS
la source
2

Si aucune de ces réponses ne fonctionne pour vous, c'est peut-être parce que le terminal que vous utilisez n'est pas le bon / le vôtre node_modulesest utilisé par une autre partie de votre ordinateur.

Dans mon cas, j'ai continué à jongler entre cette erreur (taille maximale de la pile d'appels dépassée) et l'événement d'erreur d'accès lorsque j'ai fait un sudo npm i.

Le correctif était de fermer mon IDE (qui était webstorm), de l'exécuter npm idans un terminal de base, et c'était tout.

Jonathan Simonney
la source
La fermeture de l'éditeur l'a corrigé pour moi. (Netbeans pour moi)
Wim Pruiksma
2

Je ne suis pas un utilisateur de Windows , donc si vous l'êtes, essayez de vérifier le commentaire de René Knop .

Pour les utilisateurs Unix / OSX , j'ai supprimé le fichier racine .npmrc~/.npmrc .
Avant que vous allez essayer, s'il vous plaît , vérifier s'il n'y a rien de nécessaire là - bas vous pouvez utiliser cette commande pour mettre tout le contenu dans votre terminal: cat ~/.npmrc.

Si vous avez quelque chose comme:

cat: /Users/$USER/.npmrc: No such file or directory

pour enregistrer une copie:

cp ~/.npmrc ~/.npmrc_copy

Maintenant, essayez de le supprimer (Fonctionne pour les utilisateurs bash: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

Cela a fonctionné pour moi.
J'espère que cela sera utile pour les autres.

naorz
la source
2

Je l'ai résolu à 100%, j'ai eu ce problème avec la version gulp: 3.5.6.

Vous devez nettoyer le package-lock.js, puis exécuter npm installet cela a fonctionné sous forme

Hidayat Arghandabi
la source
2

J'ai aussi eu le même problème. J'avais essayé les solutions précédentes, mais la solution pour moi était beaucoup plus simple. Je n'ai eu qu'à supprimer l'espace dans le répertoire puis à npm irecommencer

Merci à: https://github.com/nodejs/node-gyp/issues/809#issuecomment-155019383 pour l'avoir signalé.

pavlkara1
la source
1

J'ai tout essayé pour résoudre ce problème sur mon Mac. Je pense que le problème a commencé lorsque j'avais déjà téléchargé npm à partir de Node.js, puis l'ai réinstallé avec Homebrew tout en suivant une vidéo de Team Treehouse.

Voici ce que j'ai essayé:

Depuis https://docs.npmjs.com/misc/removing-npm

sudo npm uninstall npm -g
sudo make uninstall
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

De Comment désinstaller complètement Node.js et réinstaller depuis le début (Mac OS X)

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

Voici ce qui a fonctionné:

En fin de compte, la seule chose qui a fonctionné pour moi était de cloner le repo npm-reinstall à partir de GitHub, qui supprimait complètement tout ce qui concernait npm sur mon Mac.

https://github.com/brock/node-reinstall

J'ai ensuite dû réinstaller node et npm depuis Node.js.

Caleb Spindler
la source
1

L'environnement de développement de notre entreprise utilise Artifactorycomme registre par défaut pour nos dépendances NPM, et lors de son exécution, npm installil était par défaut, ce qui ne fonctionnait pas ... donc la spécification manuelle du registre npm principal via a npm install --registry https://registry.npmjs.orgcorrigé ce problème pour moi ...

Joshua Barker
la source
1

J'étais confronté à la même erreur, j'essayais d'installer jest dans l'un des packages d'un projet monorepo.

Si vous utilisez Yarn + Learna pour empaqueter un projet monorepo, vous devrez accéder au package.json dans le package cible, puis exécuter npm installou npm install <package name>.

Shrivathsa
la source
0

J'ai eu ce problème et c'était dû à une mise à jour de mon exécutable git. Je suis revenu à Git-2.21.0.rc1.windows.1-64-bit et l'ai ajouté au chemin de mon environnement et cela a résolu mon problème.

Finchy70
la source
0

J'ai tout essayé pour résoudre ce problème sur ma machine Windows 7 comme

Réinstaller et reconstruire npm

Enfin, j'ai résolu ce petit problème de configuration en perdant toute ma journée.

Comment j'ai résolu ce problème

Suppression des configurations spécifiques à mon projet dans .npmrc global à un emplacement tel que lecteur: / Windows / Users /../. Npmrc

Rajashekhar Reddy
la source
0

La seule chose qui a finalement fonctionné pour moi sur Mac a été la mise à niveau du nœud 8.12 vers 10.x en utilisant NVM.

J'ai désinstallé toutes les autres versions de Node avec NVM, puis installé 10.x, puis exécuté nvm alias default node, ce qui indique à NVM de toujours utiliser par défaut la dernière version de nœud disponible sur un shell.

Après cela, mon problème de rechargement en direct a disparu!

bildungsroman
la source
0

Le passage au fil a résolu le problème pour moi.

vgaltes
la source
0

Pour ceux qui rencontrent ce problème lors de la création d'une image Docker avec Jenkins (ou tout autre CI), assurez-vous que le package-lock.jsonest également copié dans le conteneur.

COPY ./src/package*.json /home/node/
RUN npm install

Pour nous, l'installation s'est bien déroulée, l'erreur ne s'est produite que lors de l'exécution npm prune productionde l'image de production.

Adam Eri
la source
J'ai ce problème avec npm prune et NODE_ENV pas mis en production. Résolu en supprimant à nouveau node_modules et npm install
Eduardo
0

Si votre registre npm par défaut est autre chose que le référentiel npm public (vous pouvez le vérifier en accédant à votre fichier .npmrc ou en vérifiant votre configuration npm via les commandes CLI npm), vous pouvez essayer de désactiver la configuration du registre pour qu'elle pointe vers le public Dépôt npm. Puis exécutez à npm installnouveau.

Si vous avez des dépendances qui ne sont pas disponibles dans le référentiel npm public, essayez de supprimer temporairement ces dépendances de package.json. Cela vous permettra de courir npm install. Enfin, rétablissez les dépendances et la configuration de registre que vous avez supprimées et exécutez npm installune dernière fois pour installer le reste de vos dépendances.

Xchai
la source
0

Aujourd'hui, nous avons rencontré cette erreur lors de l'exécution d'un npm prunemême après l' exécution d'un npm cache clean --force.

Versions:

node 13.8.0 
npm 6.13.6

Suppression du package-lock.jsontravaillé pour ce cas également. Merci à tous!

Jeff Hampton
la source
0

J'étais confronté à une erreur similaire. Je l'ai retrouvé au fait que npm était incapable de supprimer les fichiers des dossiers .bin pour un dossier npm lié. Je suis donc entré et rm -rf tous les dossiers .bin du dossier npm link'd.

find "linked-folder" -type d -name ".bin" -print  
For all folders listed | rm -rf  

Cela a résolu le problème.

nishant
la source
0

Je suis tombé sur le même problème mais dans mon cas, j'utilise yarndepuis le début, mais à partir d'un fichier readme de package, j'ai copié la npm installcommande et j'ai obtenu cette erreur. Plus tard réalisé que yarn add <package-name>résolu le problème et le package a été installé.

Cela pourrait aider quelqu'un à l'avenir.

nécixy
la source
0

Les étapes suivantes m'ont aidé à résoudre ce problème:

  1. Arrêtez toutes les bandes de réaction (par exemple, commencez la construction)
  2. courir npm cache clean --force
  3. courir npm install
ATQSHL
la source
0
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

fonctionne pour moi sur Ubuntu.

Dionis Oros
la source