Comment résoudre l'erreur d'arbre de dépendance (dependency tree error) lors de l'installation des packages npm ?
Si vous souhaitez utiliser du code JavaScript sur votre serveur, vous devez alors utiliser Node.js. Avec ce logiciel est installé un gestionnaire de paquet intégré, NPM (Node Package Manager). Il permet d’installer n’importe quels plugin, framework ou librairie dont vous avez besoin pour votre projet. Il utilise pour cela un système de dépendances entre chaque paquet. Le message d’erreur de type "dependency tree error" est lié au système de dépendance.
Lorsque vous installez un paquet avec NPM, 3 types de dépendances sont utilisés. Les dépendances normales sont nécessaires au bon fonctionnement du paquet et sont systématiquement installées. Les dépendances de développement (devDependencies) sont nécessaires lorsque vous modifiez le paquet. Elles ne sont utilisées que par les développeurs du paquet. Le dernier type de dépendances, les dépendances de versions (peerDependencies) sont des dépendances liées à une version spécifique d'un paquet. Ce sont ces dépendances qui causent le message d'erreur "dependency tree error", une erreur dans l'arbre des dépendances de votre projet.
Par défaut, NPM installe systématiquement toutes les dépendances de versions. Si vous rencontrez un message d'erreur, vous devez inspecter le module en question pour trouver d'où vient le problème. La commande suivante vous permet de lister les dépendances de versions d'un paquet :
npm info <nom-du-paquet> peerDependencies
Vous devez ensuite inspecter ces dépendances pour trouver ce qui ne fonctionne pas.
Une solution plus rapide consiste à n'installer aucune dépendance de version. C'était le comportement par défaut de NPM entre les versions 4 et 6. Le paramètre "--ignore-peer-deps" rétablit ce comportement, aucune dépendance de version n'est installée.
npm install --legacy-peer-deps <nom-du-paquet>
Le paquet sera installé sans message d'erreur. C'est lors de son utilisation que vous pourrez rencontrer des erreurs, liées à l'absence d'une dépendance de version. Vous devrez dans ce cas installer manuellement le paquet manquant avec la bonne version.