DevToolBoxGRATUIT
Blog

Erreurs npm install : Chaque erreur courante et comment la corriger

12 min de lecturepar DevToolBox

Lancer npm install et se heurter a un mur de texte rouge est un rite de passage pour tout developpeur JavaScript. Que ce soit une erreur de permissions sur macOS, un conflit de dependances dans un monorepo ou un cache corrompu en CI, la solution est generalement simple une fois que vous savez quoi chercher. Ce guide couvre chaque erreur courante de npm install, explique pourquoi elle survient et vous donne les commandes exactes pour la corriger.

Dictionnaire des erreurs : tableau de reference rapide

Code erreurSignificationCorrection rapide
EACCESPermission refusee — npm a tente d'ecrire dans un repertoire que vous ne possedez pas.Utiliser nvm ou corriger la propriete du repertoire (voir ci-dessous).
ENOENTFichier ou repertoire introuvable — un chemin reference n'existe pas.Supprimer node_modules et package-lock.json, puis reinstaller.
EPERMOperation non permise — souvent un probleme de verrouillage de fichier sous Windows.Fermer les editeurs/terminaux verrouillant le dossier, puis reessayer.
ERESOLVEConflit de dependances — deux packages necessitent des versions incompatibles d'une peer dependency.Utiliser --legacy-peer-deps ou --force (voir section ci-dessous).
ERR_SOCKET_TIMEOUTTimeout reseau — npm n'a pas pu atteindre le registre.Verifier les parametres reseau/proxy ou changer de registre miroir.
code 1Un script de cycle de vie (preinstall, postinstall) a termine avec le code d'erreur 1.Verifier que les outils de build (Python, node-gyp, compilateur C++) sont installes.

EACCES : corriger les erreurs de permissions

C'est l'erreur la plus courante sur macOS et Linux. Elle se produit quand npm tente d'installer des packages globaux dans un repertoire systeme comme /usr/local/lib/node_modules.

Correction sur macOS / Linux (recommande : utiliser nvm)

La meilleure correction permanente est d'utiliser un gestionnaire de versions Node pour que npm installe dans votre repertoire personnel :

# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Restart terminal, then install Node
nvm install --lts
nvm use --lts

# Verify — npm now installs to ~/.nvm/
which npm
# /home/youruser/.nvm/versions/node/v20.x.x/bin/npm

Alternative : changer manuellement le repertoire par defaut de npm :

mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'

# Add to ~/.bashrc or ~/.zshrc:
export PATH=~/.npm-global/bin:$PATH

# Reload shell
source ~/.bashrc

Option nucleaire (deconseille pour la plupart des utilisateurs) :

# NOT recommended — changes system directory ownership
sudo chown -R $(whoami) /usr/local/lib/node_modules
sudo chown -R $(whoami) /usr/local/bin
sudo chown -R $(whoami) /usr/local/share

Correction sur Windows

Sous Windows, lancez votre terminal en tant qu'administrateur, ou mieux, utilisez nvm-windows :

# Install nvm-windows from:
# https://github.com/coreybutler/nvm-windows/releases

# Then in an elevated (Admin) PowerShell:
nvm install lts
nvm use lts

# Or fix npm prefix for current user:
npm config set prefix %APPDATA%\npm

ERESOLVE : corriger les conflits de dependances

Depuis npm 7, les conflits de peer dependencies font echouer l'installation par defaut. Vous verrez un diagramme en arbre montrant les packages en conflit.

Sortie d'erreur typique :

npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: @some-org/some-package@2.1.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@"^16.8.0 || ^17.0.0" from some-library@3.5.0
npm ERR! node_modules/some-library
npm ERR!   some-library@"^3.5.0" from the root project

--legacy-peer-deps vs --force

--legacy-peer-deps dit a npm d'ignorer completement les conflits de peer dependencies (meme comportement que npm 6). --force dit a npm d'installer quand meme. Quand utiliser chacun :

FlagWhen to Use
--legacy-peer-depsQuand le decalage de peer dep est inoffensif (ex: React 18 vs 17).
--forceQuand vous voulez que npm recupere les packages meme si une copie en cache existe.
# Option 1: Ignore peer deps (safest workaround)
npm install --legacy-peer-deps

# Option 2: Force install (overrides everything)
npm install --force

Approche preferee — epingler la dependance en conflit :

// In package.json — add "overrides" to pin the conflicting dep
{
  "overrides": {
    "some-library": {
      "react": "^18.2.0"
    }
  }
}

// Then run:
// npm install

Corruption de node_modules : quand et comment supprimer et reinstaller

Parfois node_modules se retrouve dans un etat corrompu. Les symptomes incluent des erreurs "Cannot find module" pour des packages presents dans package.json, ou des echecs de build etranges apres un changement de branche.

Quand supprimer node_modules

  • Apres avoir change de branche avec des arbres de dependances differents.
  • Apres avoir resolu des conflits de fusion dans package-lock.json.
  • Quand "Module not found" apparait pour un package clairement installe.
  • Apres une mise a jour de Node.js vers une nouvelle version majeure.

Comment faire une reinstallation propre

Commande multiplateforme (bash) :

rm -rf node_modules package-lock.json
npm install

Sous Windows (PowerShell) :

Remove-Item -Recurse -Force node_modules
Remove-Item package-lock.json
npm install

Avec npx :

npx rimraf node_modules
npm install

Si les problemes persistent, nettoyez aussi le cache npm :

npm cache clean --force
rm -rf node_modules package-lock.json
npm install

Conflits package-lock.json : strategies de fusion

Quand plusieurs developpeurs modifient les dependances, les conflits de fusion de package-lock.json sont quasi garantis. N'essayez jamais de les resoudre manuellement — le fichier est genere automatiquement.

Strategie de fusion recommandee

Accepter l'un ou l'autre cote du conflit (peu importe lequel) :

# Accept "theirs" (the incoming branch's version)
git checkout --theirs package-lock.json
git add package-lock.json

# OR accept "ours" (your branch's version)
git checkout --ours package-lock.json
git add package-lock.json

Regenerer le fichier de verrouillage :

npm install

Commiter le resultat :

git add package-lock.json
git commit -m "chore: regenerate package-lock.json after merge"

Prevenir les conflits avec .gitattributes

Ajoutez ceci a votre .gitattributes pour resoudre automatiquement les conflits du fichier de verrouillage :

# .gitattributes
package-lock.json merge=ours

Incompatibilite de version Node.js

Beaucoup de packages necessitent des versions specifiques de Node.js. Si votre version est trop ancienne (ou trop recente), npm install peut echouer avec des erreurs de compilation.

Verifier la version requise

Cherchez le champ engines dans package.json :

// package.json
{
  "engines": {
    "node": ">=18.0.0",
    "npm": ">=9.0.0"
  }
}

// Check your current version:
// node -v
// npm -v

Utiliser nvm ou fnm pour changer de version

nvm (Node Version Manager) :

# List available versions
nvm ls-remote

# Install a specific version
nvm install 20

# Switch to a version
nvm use 20

# Set a default
nvm alias default 20

fnm (Fast Node Manager) — alternative plus rapide :

# Install fnm (Rust-based, faster than nvm)
curl -fsSL https://fnm.vercel.app/install | bash

# Install and use a version
fnm install 20
fnm use 20
fnm default 20

Creez un fichier .nvmrc a la racine du projet pour que toute l'equipe utilise la meme version :

# Create .nvmrc file
echo "20" > .nvmrc

# Team members just run:
nvm use
# or
fnm use

Problemes CI/CD : builds Docker et GitHub Actions

npm install se comporte differemment dans les environnements CI. Le cache, les permissions et les parametres reseau necessitent une attention particuliere.

Builds Docker

Erreurs courantes dans les Dockerfiles :

# BAD Dockerfile — no layer caching, uses npm install
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "index.js"]

# GOOD Dockerfile — proper layer caching, uses npm ci
FROM node:20-alpine
WORKDIR /app

# Copy package files first (layer caching!)
COPY package.json package-lock.json ./

# Use npm ci for deterministic installs
RUN npm ci --ignore-scripts

# Then copy the rest of the source
COPY . .

# Run any build steps after copy
RUN npm run build

CMD ["node", "index.js"]

Points cles : copier d'abord les fichiers package pour le cache de couches, utiliser npm ci au lieu de npm install en CI (plus rapide et deterministe), utiliser --ignore-scripts si les scripts postinstall ne sont pas necessaires.

Cache GitHub Actions

Un cache correct peut reduire le temps d'installation de plus de 70% :

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'  # Caches ~/.npm automatically

      - run: npm ci       # Deterministic install
      - run: npm test
      - run: npm run build

Organigramme de decision : npm install a echoue — suivez ce guide

Utilisez cet organigramme pour diagnostiquer votre echec npm install :

1. Est-ce une erreur de permissions (EACCES / EPERM) ?

OUI -> Utiliser nvm ou corriger la propriete du repertoire.

2. Est-ce un conflit de dependances (ERESOLVE) ?

OUI -> Essayer d'abord --legacy-peer-deps, puis verifier l'epinglage de version.

3. Est-ce une erreur reseau (SOCKET_TIMEOUT / FETCH) ?

OUI -> Verifier proxy, VPN, ou changer de registre miroir.

4. Est-ce une erreur de build/compilation (node-gyp / code 1) ?

OUI -> Installer les outils de build (python3, make, g++ / Visual Studio Build Tools).

5. Est-ce "Cannot find module" ou un comportement etrange ?

OUI -> Supprimer node_modules + package-lock.json, puis npm install.

6. Toujours en echec ?

OUI -> Nettoyer le cache npm (npm cache clean --force), verifier la version Node, essayer un clone frais.

Questions frequemment posees

Comment corriger "npm ERR! EACCES: permission denied" sur Mac ?

La meilleure solution est d'installer Node.js via nvm (Node Version Manager) qui installe dans votre repertoire personnel et evite les problemes de permissions. Executez : curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash, puis nvm install --lts.

Que signifie "npm ERR! ERESOLVE could not resolve" ?

ERESOLVE signifie que deux ou plusieurs packages dans votre arbre de dependances necessitent des versions differentes et incompatibles de la meme peer dependency. Depuis npm 7, c'est une erreur bloquante. Ajoutez --legacy-peer-deps ou utilisez le champ overrides dans package.json.

Faut-il supprimer package-lock.json pour corriger les erreurs npm install ?

La suppression de package-lock.json devrait etre un dernier recours. Le fichier de verrouillage garantit des installations deterministes. Essayez d'abord de supprimer uniquement node_modules. Commitez toujours le fichier de verrouillage regenere.

Pourquoi npm install echoue dans Docker mais fonctionne localement ?

Causes courantes : execution en root sans --unsafe-perm, outils de build natifs manquants, ordre COPY empechant le cache de couches, .dockerignore n'excluant pas node_modules. Utilisez npm ci dans Docker.

Comment corriger "npm ERR! code 1" pendant npm install ?

Le code d'erreur 1 signifie generalement l'echec d'un script postinstall, souvent une compilation de module natif (node-gyp). macOS : xcode-select --install. Ubuntu/Debian : sudo apt install build-essential python3. Windows : Visual Studio Build Tools.

Quelle est la difference entre npm install et npm ci ?

npm install lit package.json et peut mettre a jour package-lock.json. npm ci (clean install) supprime node_modules, lit uniquement package-lock.json et installe les versions exactes. Utilisez npm ci en CI/CD et npm install en developpement local.

𝕏 Twitterin LinkedIn
Cet article vous a-t-il aidé ?

Restez informé

Recevez des astuces dev et les nouveaux outils chaque semaine.

Pas de spam. Désabonnez-vous à tout moment.

Essayez ces outils associés

{ }JSON FormatterYMLYAML Validator & Formatter.gi.gitignore Generator

Articles connexes

npm vs yarn vs pnpm vs bun : Quel gestionnaire de paquets en 2026 ?

Comparez npm, yarn, pnpm et bun avec de vrais benchmarks.

Guide .env : Bonnes pratiques des variables d'environnement

MaĂźtrisez les fichiers .env et les variables d'environnement.