ambiente
Nodo.js: v18.12.1
Herramientas de desarrollo: VsCode
El error al ejecutar el proyecto es el siguiente:
//报错主要提示,第一行。
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at BulkUpdateDecorator.hashFactory (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\util\createHash.js:145:18)
at BulkUpdateDecorator.update (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\util\createHash.js:46:50) at OriginalSource.updateHash (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\node_modules\webpack-sources\lib\OriginalSource.js:131:8)
at NormalModule._initBuildHash (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:888:17)
at handleParseResult (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:954:10)
at D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:1048:4
at processResult (D:\editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:763:11)
at D:editingPro\isc-web-dev-jiangsu\node_modules\webpack\lib\NormalModule.js:827:5 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
Node.js v18.12.1 //当前版本号。
razón
La versión de Node.js es demasiado alta y OpenSSl3.0 lanzado en la versión Node.js V17 agrega restricciones estrictas sobre los algoritmos permitidos y los tamaños de clave, lo que puede tener un impacto en el ecosistema.
node -v //cmd进入命令行输入命令,查看自己的版本号
Solución:
Solución permanente al problema:
Primero: entrada de línea de comando
$env:NODE_OPTIONS="--openssl-legacy-provider"
Segundo: tome la iniciativa de bajar la versión de Node.js.
Modifique node.js a una versión no superior a 16
Este método no se recomienda porque en el desarrollo real, no es razonable exigir que cada desarrollador baje la versión debido a un proyecto. Algunos desarrolladores tienen varios proyectos, lo que provocará una reacción en cadena. No se introducirán detalles aquí.
Utilice variables de entorno para resolver el problema temporalmente : (la entrada de la línea de comando debe estar en modo administrador)
Primero: ¡No ingrese a la terminal de la herramienta de desarrollo en el entorno de Windows!
Ingrese en la línea de comando: reinicie el proyecto después de completar la entrada
set NODE_OPTIONS=--openssl-legacy-provider
Segundo: ¡No ingrese a la terminal de la herramienta de desarrollo en entorno Linux o WSL!
export NODE_OPTIONS=--openssl-legacy-provider