Aller au contenu principal

Configuration npm/pnpm - Résolution des erreurs ERR_INVALID_THIS

Problème résolu

Les erreurs ERR_INVALID_THIS lors de l'installation des packages npm/pnpm sont causées par des problèmes de connexion temporaires au registre npm. Ces erreurs peuvent survenir sur :

  • Les builds Vercel
  • Les pipelines CI/CD
  • Les installations locales avec une connexion instable

Solution mise en place

Fichiers .npmrc configurés

Nous avons ajouté des fichiers .npmrc avec des paramètres de retry optimisés dans :

  • / (racine du projet)
  • /apps/frontend/
  • /apps/admin-panel/

Configuration appliquée

# Registry configuration
registry=https://registry.npmjs.org/

# Network settings
fetch-retries=5 # Nombre de tentatives (défaut: 2)
fetch-retry-mintimeout=20000 # Délai minimum entre les tentatives (20s)
fetch-retry-maxtimeout=120000 # Délai maximum entre les tentatives (120s)
fetch-timeout=300000 # Timeout global (5 minutes)

# pnpm specific settings
shamefully-hoist=false
strict-peer-dependencies=false

Version de pnpm

Le projet utilise pnpm 9.15.0 (défini dans package.json via packageManager).

Pourquoi pnpm 9 ?

  • Meilleure compatibilité avec les outils de build existants
  • Stabilité éprouvée pour les monorepos
  • Support complet de Turbo et des workspaces

Changer de version de pnpm

Si vous devez utiliser une version différente :

# Mettre à jour package.json
# "packageManager": "pnpm@9.15.0"

# Activer la version avec corepack
corepack prepare pnpm@9.15.0 --activate

# Vérifier la version
pnpm --version

# Régénérer les dépendances
rm -rf node_modules pnpm-lock.yaml
pnpm install

Commandes utiles

Installation propre

# À la racine du projet
pnpm install

# Dans un workspace spécifique
cd apps/frontend
pnpm install

En cas d'erreurs persistantes

# Nettoyer complètement
rm -rf node_modules pnpm-lock.yaml
rm -rf apps/*/node_modules
rm -rf packages/*/node_modules

# Réinstaller
pnpm install --force

Vérifier la configuration

# Voir la config npm/pnpm active
pnpm config list

# Vérifier le registry
pnpm config get registry

Déploiement sur Vercel

Les fichiers .npmrc sont automatiquement utilisés par Vercel lors du build. Les paramètres de retry permettent de :

  • ✅ Réduire les échecs de build dus à des problèmes réseau
  • ✅ Augmenter la fiabilité des déploiements
  • ✅ Gérer automatiquement les timeouts du registre npm

Dépannage

Si vous voyez encore des erreurs ERR_INVALID_THIS

  1. Vérifiez que les fichiers .npmrc existent dans le dossier où vous exécutez pnpm install
  2. Attendez les retries automatiques - pnpm va réessayer automatiquement
  3. Vérifiez le statut de npm : https://status.npmjs.org
  4. Essayez avec --force : pnpm install --force

Problèmes de peer dependencies

Si vous voyez des warnings de peer dependencies :

# Les ignorer (déjà configuré dans .npmrc)
strict-peer-dependencies=false

# Ou les installer automatiquement
auto-install-peers=true

Maintenance

  • Les fichiers .npmrc doivent être versionnés (déjà dans git)
  • Mettre à jour fetch-retries si nécessaire selon la stabilité de votre connexion
  • Garder pnpm à jour régulièrement (vérifier les releases sur GitHub)