Maison >interface Web >js tutoriel >Mes apprentissages via le message d'erreur « erreur : routines d'enveloppe numérique : non prises en charge »
Pendant que je travaillais sur mon application full-stack, je suis tombé sur cette erreur cryptographique et lorsque je l'ai recherchée sur StackOverflow et ChatGPT, j'ai appris qu'elle était due à des changements dans la gestion d'OpenSSL par Node.js, affectant opérations cryptographiques, c'est-à-dire que mon application tentait d'utiliser des algorithmes ou des fonctionnalités cryptographiques qui ne sont plus pris en charge dans la version actuelle d'OpenSSL fournie avec Node.js. Donc, l'erreur provenait en fait de la dépendance que j'avais téléchargée en s'appuyant sur une version obsolète de SSL.
Sur ce, pour corriger cette erreur :
Au départ, j'ai essayé de supprimer mon dossier node_modules (du frontend
espace de travail/dossier) et réexécutez npm install afin de réinstaller
les dépendances. Cependant, cela n'a pas résolu le problème.
Ensuite, j'ai maintenant compris que je devrais changer de version obsolète
algorithme en mode hérité afin de résoudre les problèmes de compatibilité.
Et, en surfant sur les algorithmes obsolètes, ça m'a convaincu
m'a rappelé le SHA-1 dans PGP (Pretty Good Privacy) que j'ai appris dans le
semestre précédent au collège, en réseaux informatiques. SHA-1 est un hachage
algorithme qui est devenu un algorithme obsolète à cause du
problèmes de sécurité.
Et poursuivant sur le sujet, puisque mon application était une application non critique qui nécessitait également une certaine compatibilité descendante, j'ai décidé de continuer à utiliser l'indicateur --openssl-legacy-provider pour une solution de contournement temporaire, car cela m'aiderait apprenez-en plus sur les erreurs possibles qui pourraient survenir, en savoir plus sur les causes et comment les résoudre, ainsi que sur d'autres termes que je pourrais éventuellement rencontrer au cours du processus.
Le --openssl-legacy-provider permet l'utilisation d'algorithmes existants en demandant à Node.js d'utiliser l'ancien fournisseur d'OpenSSL, rétablissant ainsi la prise en charge de ces fonctions cryptographiques.
Donc, dans le terminal, j'ai commencé avec :
npm update npm audit fix — force
Puis, sur le fichier package.json, j'ai apporté les modifications suivantes :
AVANT :
"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }
APRÈS :
"scripts": { "start": "react-scripts --openssl-legacy-provider start", "build": "react-scripts --openssl-legacy-provider build", "test": "react-scripts test", "eject": "react-scripts eject" }
Maintenant, cela a finalement résolu le problème et j'ai adoré la façon dont j'ai progressé en apprenant différentes choses simplement en essayant de résoudre ce problème moi-même, en apprenant comment fonctionne npm en détail, comment les versions sont gérées, sur les algorithmes obsolètes et hérités, etc. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!