npm install falha com EACCES, ERESOLVE ou falta de memória: o que fazer

Quando o npm install falha, a mensagem costuma ser comprida, mas a causa cabe numa de meia dúzia de famílias. A resposta curta: procure na saída a primeira linha que começa por npm ERR! (ou npm error, nas versões mais recentes) e o código que a segue (EACCES, ERESOLVE, ENOSPC…). O código diz quase tudo. Este artigo serve para a hospedagem (cPanel) e para um VPS.

O código, e o que significa

O que vê O que é O que fazer
EACCES (permission denied) O npm tentou escrever onde o seu utilizador não pode, quase sempre por causa de um -g (instalação global) ou de uma pasta que pertence a outro utilizador. No cPanel não use instalações globais nem sudo: instale no projecto, dentro do ambiente da aplicação. Num VPS, não use sudo npm install no projecto: corrija o dono da pasta (chown) em vez de contornar. Veja também permission denied numa aplicação Node.js ou Python.
ERESOLVE (unable to resolve dependency tree) Duas bibliotecas pedem versões incompatíveis de uma terceira (conflito de peer dependencies). A solução limpa é alinhar as versões. Para avançar já, npm install --legacy-peer-deps ignora o conflito. A opção --force é mais agressiva: use-a só se souber o que o conflito significa.
JavaScript heap out of memory O Node esgotou a memória que lhe cabe a compilar ou a instalar. Compile no seu computador e envie o resultado. Num VPS, pode aumentar o limite do Node, por exemplo com NODE_OPTIONS=--max-old-space-size=2048 (o valor é um exemplo), se a máquina tiver memória livre.
ENOSPC ou «quota exceeded» Sem espaço no disco, ou o limite de ficheiros (inodes) da conta foi atingido. Veja os limites da conta. Apague o que não usa e instale só o que a produção precisa.
node-gyp, gcc, Python.h Uma biblioteca tem partes que se compilam, e faltam ferramentas. Procure uma versão com binário pronto, ou uma alternativa em JavaScript puro. Num VPS pode instalar as ferramentas de compilação do sistema.
ETIMEDOUT, ENOTFOUND O servidor não chegou ao registo do npm: rede ou DNS. Repita; confirme a ligação com curl -I https://registry.npmjs.org.
EINTEGRITY A cache do npm ficou corrompida. npm cache verify e instale de novo.

A rotina que resolve a maioria

1 Confirme a versão do Node que o projecto pede (campo engines do package.json): node -v
npm -v
Uma versão errada gera erros que parecem outra coisa.
2 Apague e recomece, a partir do ficheiro de bloqueio: rm -rf node_modules
npm ci
No cPanel, o botão «Run NPM Install» faz a parte da instalação, no ambiente certo.
3 Leia a primeira mensagem de erro, não a última. As últimas linhas costumam ser só o resumo do npm.
4 Mudou de versão do Node? Reinstale as dependências: algumas têm partes compiladas para uma versão específica.
Não use sudo para calar um EACCES. Faz a instalação passar e deixa ficheiros do projecto a pertencer ao root, o que gera o erro seguinte, e outro depois. No cPanel nem existe root. Se o problema é uma pasta com o dono errado, corrija o dono.
Guarde a mensagem inteira antes de apagar nada: o npm escreve um ficheiro de registo (o caminho aparece no fim do erro). Se pedir ajuda, é isso que mais ajuda quem lê. Para escolher o gestor e o ficheiro de bloqueio certos, veja npm, yarn ou pnpm.

A instalação falha e não percebe porquê? Envie-nos o domínio e a primeira linha de erro.

Abrir um pedido de suporte

VEJA TAMBÉM

npm, yarn ou pnpm: qual usar

Node.js no cPanel: escolher a versão e usar o npm

Os limites de que ninguém fala: inodes, processos e memória

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?