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
- Vérifiez que les fichiers
.npmrcexistent dans le dossier où vous exécutezpnpm install - Attendez les retries automatiques - pnpm va réessayer automatiquement
- Vérifiez le statut de npm : https://status.npmjs.org
- 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
.npmrcdoivent être versionnés (déjà dans git) - Mettre à jour
fetch-retriessi nécessaire selon la stabilité de votre connexion - Garder pnpm à jour régulièrement (vérifier les releases sur GitHub)