Inicio·Mensajes de error

node 17+ · npm

El mensaje

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

Qué significa

node 17 incorporó OpenSSL 3, que quitó de los valores por omisión un algoritmo de hash antiguo, y una herramienta que sigue pidiéndolo se cae justo dentro de esa llamada. Casi siempre es un webpack 4 viejo, o una herramienta que lo lleva dentro, corriendo sobre un node moderno. export NODE_OPTIONS=--openssl-legacy-provider vuelve a habilitar los algoritmos antiguos para ese proceso y es inocuo para una compilación. Pero eso mantiene con vida una herramienta muerta: subir a webpack 5, o a la versión actual de tu framework, elimina por completo la necesidad de la opción.

El arreglo

export NODE_OPTIONS=--openssl-legacy-provider
Lo imprime
node 17+
npm
20

En npm la causa está en la primera línea code XXXX y no en las seis últimas líneas npm ERR!, y cuando el fallo viene del árbol de dependencias o de una compilación nativa y no de tu código, borrar node_modules y reinstalar resuelve la mitad de los casos.

Cómo leer un mensaje de error

  • Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
  • Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
  • Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
  • La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
  • Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.

Preguntas frecuentes

Q. ¿Qué significa «Error: error:0308010C:digital envelope routines::unsupported»?

node 17 incorporó OpenSSL 3, que quitó de los valores por omisión un algoritmo de hash antiguo, y una herramienta que sigue pidiéndolo se cae justo dentro de esa llamada. Casi siempre es un webpack 4 viejo, o una herramienta que lo lleva dentro, corriendo sobre un node moderno. export NODE_OPTIONS=--openssl-legacy-provider vuelve a habilitar los algoritmos antiguos para ese proceso y es inocuo para una compilación. Pero eso mantiene con vida una herramienta muerta: subir a webpack 5, o a la versión actual de tu framework, elimina por completo la necesidad de la opción.

Q. ¿Cómo se arregla?

export NODE_OPTIONS=--openssl-legacy-provider — antes de ejecutarlo, mira arriba qué descarta este comando.

Q. ¿Qué herramienta lo imprime?

node 17+. Está en npm y el mensaje tiene 4 palabras.

Errores cercanos