Como Resolver npm ERR! ERESOLVE unable to resolve dependency tree [Guia Atualizado 2026]
Você já encontrou o erro “npm ERR! ERESOLVE unable to resolve dependency tree” ao executar npm install em um projeto Node.js? Este erro é um problema comum que muitos desenvolvedores enfrentam diariamente devido às regras mais rigorosas de resolução de dependências introduzidas no npm 7 e versões posteriores. Neste artigo, explicaremos em detalhes as causas deste erro, soluções específicas e medidas preventivas com base nas informações mais recentes de 2026.
O Que É Este Erro? Sintomas Quando Ocorre
“npm ERR! ERESOLVE unable to resolve dependency tree” é um erro que ocorre quando o npm detecta combinações incompatíveis de versões de pacotes ao construir a árvore de dependências do projeto. Especificamente, você verá uma mensagem de erro como esta:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: your-project@1.0.0
npm ERR! Found: react@18.2.0
npm ERR! node_modules/react
npm ERR! react@"^18.2.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.0" from some-package@2.0.0
npm ERR! node_modules/some-package
npm ERR! some-package@"^2.0.0" from the root project
Quando este erro ocorre, o comando npm install é interrompido e os pacotes necessários não são instalados. Como resultado, o projeto não pode ser compilado ou executado. Este erro ocorre comumente nas seguintes situações:
- Ao clonar um projeto existente e instalar dependências
- Ao tentar adicionar um novo pacote
- Após atualizar as versões do Node.js ou npm
- Durante builds automáticos em pipelines CI/CD
Problemas que eram exibidos como avisos antes do npm 6 agora são tratados como erros a partir do npm 7, aumentando significativamente a frequência de encontrar este erro.
Causas Deste Erro
Causa 1: Conflitos de Peer Dependency
A causa mais comum são conflitos de peer dependency. Uma peer dependency é um mecanismo onde um pacote declara “se você usar este pacote, você precisa de uma versão específica de outro pacote.”
Por exemplo, se uma biblioteca de UI baseada em React requer React 17, mas seu projeto usa React 18, ocorre um conflito de peer dependency. Quando múltiplos pacotes requerem diferentes versões do React, o npm não consegue construir a árvore de dependências.
Este problema ocorre frequentemente durante atualizações de versões principais para frameworks como React, Angular e Vue. Como leva tempo para bibliotecas de terceiros suportarem novas versões, incompatibilidades de versão frequentemente ocorrem entre o projeto e pacotes dependentes.
Causa 2: Resolução Rigorosa de Dependências no npm 7 e Posteriores
As mudanças introduzidas no npm 7 alteraram fundamentalmente como as peer dependencies são tratadas. Antes do npm 7, conflitos de peer dependency eram apenas exibidos como avisos e a instalação continuava. No entanto, a partir do npm 7, conflitos de peer dependency são tratados como erros e a instalação é interrompida.
Esta mudança foi introduzida para detectar problemas de dependência precocemente, mas causou problemas de compatibilidade com muitos projetos existentes e pacotes antigos. Este erro ocorre frequentemente, especialmente em projetos que usam pacotes que não foram mantidos por muito tempo.
Causa 3: Inconsistência Entre package-lock.json e package.json
Quando o arquivo package-lock.json está dessincronizado com package.json, isso também pode causar o erro. Isso ocorre em situações como:
- Usar um arquivo lock gerado por uma versão diferente do npm
- Não atualizar o arquivo lock após editar manualmente
package.json - Múltiplos desenvolvedores trabalhando em diferentes ambientes
- Corrupção do arquivo lock durante merges do git
Causa 4: Problemas de Cache
Se dados antigos ou corrompidos permanecem no cache do npm, a resolução de dependências pode falhar. Isso é particularmente provável de ocorrer ao trocar frequentemente versões de pacotes ou quando downloads são interrompidos devido a problemas de rede.
Causa 5: Problemas de Compatibilidade de Versão do Node.js
Este erro também pode ocorrer quando a versão do Node.js que você está usando não corresponde à versão requerida pelos pacotes que você está tentando instalar. Alguns pacotes funcionam apenas com versões específicas do Node.js, tornando importante o gerenciamento de versões do Node.js.
Solução 1: Use a Flag –legacy-peer-deps (Recomendado)
A solução mais fácil e segura é usar a flag --legacy-peer-deps. Ao adicionar esta flag, você pode usar o algoritmo de resolução de dependências da era do npm 6, ignorando conflitos de peer dependency e continuando com a instalação.
Passo 1: Uso Básico
Execute o seguinte comando no seu terminal:
npm install --legacy-peer-deps
Ao instalar um pacote específico:
npm install nome-do-pacote --legacy-peer-deps
Por exemplo, ao instalar bibliotecas relacionadas ao React:
npm install react-router-dom --legacy-peer-deps
Passo 2: Torná-lo a Configuração Padrão via Arquivo .npmrc
Se adicionar a flag toda vez for tedioso, você pode criar um arquivo .npmrc no diretório raiz do projeto para habilitar --legacy-peer-deps por padrão:
# Execute na raiz do projeto
echo "legacy-peer-deps=true" > .npmrc
Ou, para aplicá-lo como uma configuração global:
npm config set legacy-peer-deps true
Isso aplicará automaticamente --legacy-peer-deps aos futuros comandos npm install.
Passo 3: Utilizar resolutions do package.json (Opcional)
Ao usar Yarn ou quando um controle mais refinado for necessário, você pode adicionar um campo resolutions ao package.json para forçar versões específicas de pacotes:
{
"resolutions": {
"react": "18.2.0"
}
}
Notas Importantes
--legacy-peer-deps é uma opção segura, mas significa ignorar avisos de peer dependency. Isso implica que problemas de compatibilidade entre pacotes podem ser negligenciados. Certifique-se de testar se sua aplicação funciona corretamente antes de fazer deploy para produção.
Além disso, esta flag apenas relaxa as verificações de peer dependency enquanto mantém outras verificações de segurança. Portanto, é uma escolha mais segura do que a flag --force.
Solução 2: Realizar uma Instalação Limpa
Quando a árvore de dependências é complexa e emaranhada, uma instalação limpa é eficaz. Isso permite limpar dependências problemáticas existentes e reconstruir a partir de um estado limpo.
Passo 1: Remover Dependências Existentes
Primeiro, delete o diretório node_modules e package-lock.json:
Para Windows:
rmdir /s /q node_modules
del package-lock.json
Para macOS/Linux:
rm -rf node_modules
rm package-lock.json
Passo 2: Limpar o Cache do npm
Limpe o cache pois cache antigo pode estar causando o problema:
npm cache clean --force
Passo 3: Reinstalar Dependências
Reinstale as dependências a partir de um estado limpo:
npm install
Se o erro ainda ocorrer, combine com --legacy-peer-deps:
npm install --legacy-peer-deps
Comando de Uma Linha
Para executar os passos acima juntos:
Para macOS/Linux:
rm -rf node_modules package-lock.json && npm cache clean --force && npm install --legacy-peer-deps
Para Windows (PowerShell):
Remove-Item -Recurse -Force node_modules; Remove-Item package-lock.json; npm cache clean --force; npm install --legacy-peer-deps
Este método é particularmente eficaz ao assumir um projeto de outro desenvolvedor ou retomar um projeto que foi abandonado por muito tempo.
Solução 3: Ajustar Manualmente as Versões dos Pacotes (Avançado)
Se você quer uma solução fundamental, pode ajustar manualmente as versões dos pacotes. Isso permite construir dependências estáveis a longo prazo.
Passo 1: Analisar a Mensagem de Erro em Detalhe
A mensagem de erro indica qual pacote requer qual versão:
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.0" from some-library@2.0.0
Neste exemplo, some-library@2.0.0 requer React 17.
Passo 2: Identificar Versões Compatíveis
Pesquise o pacote no site npmjs e verifique versões compatíveis. Frequentemente, a versão mais recente de um pacote suporta versões mais novas do React:
npm view some-library versions
npm view some-library peerDependencies
Passo 3: Atualizar package.json
Uma vez que você encontre uma versão compatível, atualize package.json:
{
"dependencies": {
"some-library": "^3.0.0"
}
}
Ou, ao fazer downgrade para corresponder a uma versão específica do React:
{
"dependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
}
Passo 4: Usar npm-check-updates (Opcional)
Ao atualizar múltiplos pacotes de uma vez, a ferramenta npm-check-updates é conveniente:
npx npm-check-updates -u
npm install
Usando o Campo overrides (npm 8.3+)
A partir do npm 8.3, você pode adicionar um campo overrides ao package.json para sobrescrever versões específicas de dependências:
{
"overrides": {
"some-library": {
"react": "^18.0.0"
}
}
}
Isso permite sobrescrever forçadamente a versão do React requerida por some-library para 18. No entanto, este método pode causar comportamento inesperado, então teste completamente.
Como Prevenir Este Erro
Atualizações Regulares de Dependências
Ao atualizar regularmente as dependências do seu projeto, você pode minimizar conflitos de peer dependency. Verifique semanalmente pacotes desatualizados com o comando npm outdated:
npm outdated
Gerenciamento de Versões do Node.js e npm
Use ferramentas de gerenciamento de versões como nvm para usar a versão apropriada do Node.js para cada projeto:
# Criar arquivo .nvmrc
echo "18.17.0" > .nvmrc
# Executar no diretório do projeto
nvm use
Medidas para Pipelines de CI
Para evitar este erro em pipelines CI/CD, inclua o arquivo .npmrc no seu repositório ou adicione flags ao comando de instalação:
# Exemplo do GitHub Actions
- name: Install dependencies
run: npm ci --legacy-peer-deps
Unificar Regras Dentro da Equipe
Ao desenvolver em equipe, é importante unificar as seguintes regras:
- Versões do Node.js e npm a serem usadas
- Regras para commitar
package-lock.json - Processo de verificação ao adicionar novos pacotes
Resumo
O erro “npm ERR! ERESOLVE unable to resolve dependency tree” é um problema comum causado por verificações de dependência mais rigorosas a partir do npm 7. Para abordar este erro, este artigo introduziu três abordagens:
- Flag –legacy-peer-deps: O método mais fácil e seguro. Isso resolve a maioria dos casos
- Instalação limpa: Eficaz quando dependências são complexas e emaranhadas
- Ajuste de versão de pacotes: Um método avançado para alcançar uma solução fundamental
Primeiro, tente npm install --legacy-peer-deps, e se isso não funcionar, tente uma instalação limpa. A longo prazo, é importante atualizar regularmente as dependências e manter a saúde do projeto.
Se este erro não puder ser resolvido ou se problemas ocorrerem com pacotes específicos, verifique issues no repositório GitHub desse pacote ou pesquise problemas similares no Stack Overflow.
Referências
- Fix ‘npm ERR! ERESOLVE unable to resolve dependency tree’ – OpenReplay Blog
- Understanding and Resolving npm Dependency Conflicts: A Developer’s Guide – DEV Community
- How to Fix npm Peer Dependency Conflicts – OneUptime
- Why –legacy-peer-deps is Better than –force in npm – DEV Community
- npm Docs – config

コメント