Mensaje de error "error:0308010C:rutinas de sobre digital::no admitidas"

Resuelto a1cd asked hace 3 años • 71 respuestas

Creé el proyecto IntelliJ IDEA React predeterminado y obtuve esto:

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at module.exports (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
/Users/user/Programming Documents/WebServer/untitled/node_modules/react-scripts/scripts/start.js:19
  throw err;
  ^

Parece ser un problema reciente: webpack encontró esto hace 4 días y todavía está trabajando en ello .

a1cd avatar Oct 24 '21 06:10 a1cd
Aceptado

Puedes probar uno de estos:

1. Baje a Node.js v16.

  • Puede reinstalar la versión LTS actual desde el sitio web de Node.js.

  • También puedes usar nvm. Para Windows, utilice nvm-windows.

2. Habilite el proveedor OpenSSL heredado.

En sistemas tipo Unix (Linux, macOS, Git bash, etc.):

export NODE_OPTIONS=--openssl-legacy-provider

En el símbolo del sistema de Windows:

set NODE_OPTIONS=--openssl-legacy-provider

En PowerShell:

$env:NODE_OPTIONS = "--openssl-legacy-provider"

Referencia

Ajoy Karmakar avatar Oct 24 '2021 18:10 Ajoy Karmakar

Peligro

Esta pregunta tiene más de 30 respuestas, la mayoría sugiere degradar Node.js a una versión anterior a v17 o utilizar el proveedor SSL heredado. Ambas soluciones son trucos que dejan sus compilaciones expuestas a amenazas de seguridad .

Motivo del error

En Node.js v17, los desarrolladores de Node.js cerraron un agujero de seguridad en el proveedor SSL. Esta solución fue un cambio importante que se correspondía con cambios importantes similares en los paquetes SSL en NPM. Cuando intente utilizar SSL en Node.js v17 o posterior sin actualizar también esos paquetes SSL en su archivo package.json, verá este error.

La solución correcta (segura) (para usuarios de npm)

Utilice una versión actualizada de Node.js y también utilice paquetes que estén actualizados con correcciones de seguridad.

Para muchas personas, el siguiente comando solucionará el problema:

npm audit fix --force

Sin embargo, tenga en cuenta que, para compilaciones complejas, el comando anterior generará correcciones de seguridad que potencialmente pueden dañar su compilación.

Nota para usuarios de Yarn

Los usuarios de Yarn pueden usar Yarn-audit-fix que se puede ejecutar sin instalarlo como una dependencia a través de

npm_config_yes=true npx yarn-audit-fix

o powershell de windows:

$env:npm_config_yes = 1; npx yarn-audit-fix

Una solución menos dura (también correcta) para Webpack

En la configuración de su paquete Web, configure cualquiera de los siguientes: (consulte los documentos de ouput.hashFunction )

A. (Webpack v5) Establecer output.hashFunction = 'xxhash64'.
B. (Webpack v4) Esto dependerá de qué algoritmos hash admita nodejs en su sistema . Algunas opciones comunes que puedes probar son output.hashFunction = 'sha512'o output.hashFunction = 'sha256'.

Vea más información en la respuesta de Greg .

David avatar Jul 18 '2022 19:07 David