Tamanho máximo da pilha de chamadas excedido na instalação npm


155

Estou tentando executar npm install, isso é saída do 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>

e este é o conteúdo 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 ]

Removido node_modulesvárias vezes e tentou reinstalar. Não consigo entender qual é o motivo que causa isso e como corrigi-lo.


1
Antes de tudo, eu verificaria o link de problemas do github para problemas semelhantes e o adicionaria se não fosse um problema conhecido. Além disso, por que você está tentando instalar a v4.2.6? A versão mais recente atual é a v7.1.0 e a versão estável recomendada é a v6.9.1. Limpe tudo, tente o 6.9.1 e atualize a pergunta.
TheEnvironmentalist

1
Atualizado para v6.9.1 ainda tem o mesmo erro e pergunta atualizada também. Obrigado na mesma TheEnvironmentalist
GROX13


No meu caso, isso foi causado devido a uma declaração recursiva no package.json;)
Alberto S.

no meu caso, foi causado porque eu havia perdido a conexão com a internet
RayJ_inSJ

Respostas:


96

A resposta do metzelder me ajudou a corrigir o problema. no entanto, se você executar o comando npm cache clean, ele receberá uma mensagem

A partir do npm @ 5, o cache do npm se recupera automaticamente de problemas de corrupção e os dados extraídos do cache são válidos

Portanto, a partir do npm5, você pode fazer adicionando um --forcesinalizador ao comando

Portanto, o comando é:

npm cache clean --force

143
Espero que você saiba o que está fazendo.
CloudMeta 20/02/19

1
Quanto a mim, mudei o diretório de trabalho atual para outra pasta - parece que ele misturou npm. Excluindo node_modules e reinstalar fez o truque
Philippe Hebert

10
@MetaGuru, por favor, explique quais são as conseqüências da execução desse comando ...
cdalxndr

3
@CTS_AE Não acho que a equipe da NPM tenha adicionado essa mensagem como uma piada. Deve haver uma consequência e alguém deve explicá-la.
cdalxndr 20/04

2
@cdalxndr Eu estava dizendo que é deixado como um comentário como uma piada / sátira, como uma citação direta de que npmele não estava realmente acrescentando nada útil, mas mais um meme neste momento. Você pode ler mais sobre o comando real aqui: docs.npmjs.com/cli-commands/cache.html explica explicitamente o que a força faz; agora que todos os itens do cache são totalmente verificados quanto à sua integridade, se algo estiver corrompido, ele se recuperará automaticamente; portanto, o cache deverá sempre estar em um estado adequado e nunca ser limpo, a menos que você esteja tentando recuperar espaço em disco; portanto, será necessário anexar --force. Nota: pode variar de acordo com a versão.
CTS_AE

83

npm rebuild resolveu meu problema


31
Alguém pode explicar mais essa resposta? Por que isso resolve o problema?
Patrick Szalapski 27/03/19

3
excluída pacote-lock.json e npm reconstruir fez o truque para mim
Conheça Patel

no meu caso, certos arquivos na minha pasta .npm foram instalados como raiz. A verificação do cache npm informa o que está errado.
kirenpillay

Isso fez o truque. O cache do npm limpo não funcionou nesta ocasião.
Shiva Naru

43

Tente remover package-lock.jsone a node-modulespasta:

rm package-lock.json
rm -r node_modules

14
Você está matando o objetivo do package-lock.json se você o excluir. Garante que suas dependências serão determinísticas.
Eliseu Monar dos Santos 12/08/19

5
É verdade, mas se você não conseguir instalar o aplicativo em uma plataforma diferente, não terá outra opção a não ser fazer isso.
Marc

19

Eu tive o mesmo problema com npm install. Após muita pesquisa, descobri que a remoção do .npmrcarquivo ou do conteúdo (encontrado em %USERPROFILE%/.npmrc) resolverá esse problema. Isso funcionou para mim.


13
npm uninstall

npm cache clean --force

Estou usando este método dois, mas não funcionou. Depois de excluir os módulos do nó e novamente instalar o npm, ele não funcionou novamente. Por fim, estou excluindo package-lock.json e crie um novo arquivo package-lock.json depois disso, usando

npm install

e ok !!!


5
A exclusão do arquivo package-lock.json o corrigiu para mim, obrigado!
Ryan Wilson

11

Eu superei esse problema fazendo o seguinte:

  • Exclua todo o conteúdo das dependências npm. Você pode encontrar o local de instalação padrão de acordo com este segmento: https://stackoverflow.com/a/5926706/1850297

  • Antes de executar o npm installcomando, sugiro executarnpm cache clean --force


Mensagem de npm cache clean: "A partir do npm @ 5, o cache do npm se recupera automaticamente de problemas de corrupção e os dados extraídos do cache são válidos."
21818 Ian Grainger

7

eu deletei

node_modules

e depois reinstalado por

instalação npm

Funcionou para mim


2
bastante engraçado eu tive que reiniciar, o meu computador, além de seus passos para que ele funcione, desde que eu estou trabalhando com WSL
Avshalom

7

No meu caso, atualize para a versão mais recente:

npm install -g npm


5

Eu apenas fiz npm rebuildisso funcionar como charme.


3

npm cache clean retorna abaixo da mensagem

A partir do npm @ 5, o cache do npm se recupera automaticamente de problemas de corrupção e os dados extraídos do cache são válidos. Se você quiser garantir que tudo esteja consistente, use 'npm cache Verifique'. Por outro lado, se você estiver depurando um problema com o instalador, poderá npm install --cache /tmp/empty-cacheusar um cache temporário em vez de neutralizar o real.

se você executar o cache do npm, verifique como especificado acima, na verdade, ele executará a verificação do cache e a coleta de lixo, que corrigem o problema

Cache verificado e compactado (~ \ AppData \ Roaming \ npm-cache_cacache): Conteúdo verificado: 6183 (447214684 bytes) Conteúdo coletado por lixo: 16 (653745 bytes) Entradas do índice: 9633


Isso foi o suficiente para mim. A verificação de cache do npm corrigiu o problema de uma maneira que a remoção de node_modules não. (E eu não usaria o cache ou o package-lock.json). Tenho certeza de que esse é um problema do npm. Não consigo ver por que o npm cache Verifique mudaria alguma coisa se realmente se auto-recuperasse.
Stuart Watt

3

Esse problema também pode ocorrer se você estiver tentando instalar um pacote que não existe ou se estiver tentando instalar uma versão que não existe.


2

Você desinstala o pacote npm e força a limpeza do cache, fecha o terminal e reinstala o que for.

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

Em seguida, reinicie o terminal e verifique

Ainda não está funcionando, atualize o npm e o nó para a versão mais recente


2

Caso nenhuma dessas respostas funcione para você, pode ser porque o terminal que você está usando não é o certo / o seu node_modulesé usado por outra parte do seu computador.

No meu caso, eu mantive a junção entre esse erro (tamanho máximo da pilha de chamadas excedido) e o evento de erro de acesso ao executar um sudo npm i.

A correção foi fechar meu IDE (que era webstorm), rodar npm iem um terminal básico, e foi isso.


Fechar o editor corrigiu isso para mim. (Netbeans para mim)
Wim Pruiksma

2

Eu não sou usuário do Windows , então, se você for, tente verificar o comentário de Rene Knop .

Para usuários Unix / OSX , removi o arquivo .npmrc raiz ~/.npmrc.
Antes que você está indo para experimentá-lo, por favor , verifique se não há nada necessária para lá que você pode usar este comando para trazer todo o conteúdo em seu terminal: cat ~/.npmrc.

Se você tem algo como:

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

para salvar uma cópia:

cp ~/.npmrc ~/.npmrc_copy

Agora, tente removê-lo (funciona para usuários do bash: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

Isso funcionou para mim.
Espero que isso seja útil para os outros.


2

Resolvi 100%. Tive esse problema com a versão gulp: 3.5.6.

Você deve limpar o package-lock.js e, em seguida, executar npm installe funcionou do formulário



1

Eu tentei de tudo para corrigir esse problema no meu Mac. Acho que o problema começou quando eu já havia baixado o npm do Node.js e depois o reinstalado com o Homebrew enquanto acompanhava um vídeo do Team Treehouse.

Aqui está o que eu tentei:

De 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 Como desinstalar completamente o Node.js e reinstalar do início (Mac OS X)

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

Aqui está o que funcionou:

No final, a única coisa que funcionou para mim foi clonar o repositório npm-reinstal do GitHub que removeu completamente tudo relacionado ao npm no meu Mac.

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

Eu tive que reinstalar o nó e o npm do Node.js.


1

Nosso ambiente de desenvolvimento da empresa usa Artifactorycomo o registro padrão para nossas dependências do NPM e, ao executá- npm installlo, foi padronizado para isso, o que não funcionou ... então, especificando manualmente o registro principal do npm por meio de npm install --registry https://registry.npmjs.orgum problema corrigido para mim ...


1

Eu estava enfrentando o mesmo erro, estava tentando instalar o gracejo em um dos pacotes em um projeto monorepo.

Se você estiver usando o Yarn + Learna para empacotar um projeto de monorepo, precisará navegar para o package.json dentro do pacote de destino e, em seguida, execute npm installou npm install <package name>.


0

Eu tive esse problema e foi devido a uma atualização do meu executável git. Voltei ao Git-2.21.0.rc1.windows.1-64-bit e adicionei isso ao caminho do ambiente e corrigi meu problema.


0

Eu tentei de tudo para corrigir esse problema na minha máquina Windows 7 como

Reinstalando e reconstruindo o npm

Por fim, corrigi esse pequeno problema de configuração desperdiçando meu dia inteiro.

Como eu resolvi esse problema

Removendo as configurações específicas do meu projeto no .npmrc global em local como drive: / Windows / Users /../. Npmrc


0

A única coisa que finalmente funcionou para mim no Mac foi a atualização do nó 8.12 para 10.x usando o NVM.

Desinstalei todas as outras versões do Node com o NVM, instalei o 10.x e executei nvm alias default node, o que instrui o NVM a sempre usar como padrão a versão mais recente do nó disponível em um shell.

Depois disso, meu problema de recarga ao vivo desapareceu!



0

Para aqueles com esse problema ao criar uma imagem do Docker com o Jenkins (ou qualquer IC), verifique se ela package-lock.jsontambém foi copiada para o contêiner.

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

Para nós, a instalação realmente correu bem, o erro ocorreu apenas durante a execução npm prune productionda imagem de produção.


Eu tenho esse problema com a remoção do npm e o NODE_ENV não está definido para produção. Resolvido removendo node_modules e npm install novamente
Eduardo

0

Se o registro npm padrão for algo diferente do repositório público do npm (você pode verificar isso acessando o arquivo .npmrc ou verificando a configuração do npm através dos comandos da CLI npm), tente desconfigurar a configuração do registro para que ela aponte para o público repositório npm. Então corra npm installnovamente.

Se você tiver dependências que não estão disponíveis no repositório público do npm, tente remover temporariamente essas dependências do package.json. Isso permitirá que você execute npm install. Por fim, reverta as dependências e a configuração do registro removidas e execute npm installuma última vez para instalar o restante de suas dependências.


0

Hoje encontramos esse erro ao executar um npm prunemesmo após executar um npm cache clean --force.

Versões:

node 13.8.0 
npm 6.13.6

Excluindo o package-lock.jsontrabalhado para este caso também. Obrigado a todos!


0

Eu estava enfrentando um erro semelhante. Eu rastreei até o fato de que o npm não conseguiu excluir arquivos das pastas .bin para uma pasta com link do npm. Então eu entrei e rm -rf todas as pastas .bin da pasta npm link'd.

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

Isso resolveu o problema.


0

Me deparei com o mesmo problema, mas no meu caso eu tenho usado yarndesde o início, mas em algum pacote leia-me copiei o npm installcomando e obtive esse erro. Mais tarde, percebi que yarn add <package-name>resolveu o problema e o pacote foi instalado.

Pode ajudar alguém no futuro.


0

As etapas a seguir me ajudaram a resolver esse problema:

  1. Pare todas as tiras de reação (por exemplo, inicie a compilação)
  2. corre npm cache clean --force
  3. corre npm install

0
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

funciona para mim no Ubuntu.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.