Accueil·Messages d’erreur

node 17+ · npm

Le message

Error: error:0308010C:digital envelope routines::unsupported

Ce que cela veut dire

node 17 est arrivé avec OpenSSL 3, qui a retiré des valeurs par défaut un vieil algorithme de hachage, et un outil qui le réclame encore s'écroule au cœur de cet appel. C'est presque toujours un vieux webpack 4, ou un outil qui en embarque un, tournant sur un node moderne. export NODE_OPTIONS=--openssl-legacy-provider réactive les algorithmes anciens pour ce processus et est sans danger pour un build. Mais cela maintient en vie un outil mort : passer à webpack 5, ou à la version actuelle de votre framework, supprime totalement le besoin de cette option.

Le correctif

export NODE_OPTIONS=--openssl-legacy-provider
Émis par
node 17+
npm
20

Avec npm, la cause tient dans la première ligne code XXXX et non dans les six dernières lignes npm ERR!, et quand la panne vient de l'arbre de dépendances ou d'une compilation native plutôt que de votre code, supprimer node_modules puis réinstaller en règle environ la moitié.

Lire un message d’erreur

  • Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
  • S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
  • Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
  • La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
  • Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.

Questions fréquentes

Q. Que veut dire « Error: error:0308010C:digital envelope routines::unsupported » ?

node 17 est arrivé avec OpenSSL 3, qui a retiré des valeurs par défaut un vieil algorithme de hachage, et un outil qui le réclame encore s'écroule au cœur de cet appel. C'est presque toujours un vieux webpack 4, ou un outil qui en embarque un, tournant sur un node moderne. export NODE_OPTIONS=--openssl-legacy-provider réactive les algorithmes anciens pour ce processus et est sans danger pour un build. Mais cela maintient en vie un outil mort : passer à webpack 5, ou à la version actuelle de votre framework, supprime totalement le besoin de cette option.

Q. Comment le corriger ?

export NODE_OPTIONS=--openssl-legacy-provider — avant de le lancer, vérifiez plus haut ce que cette commande jette.

Q. Quel outil émet cela ?

node 17+. Cela relève de npm, et le message compte 4 mots.

Erreurs voisines