crypto.hash no es una función: error en Vite + Firebase Hosting y su solución

Introducción: Al desplegar un proyecto Vite + React en Firebase Hosting utilizando GitHub Actions puede aparecer un fallo de compilación provocado por una versión de Node.js desactualizada. Documentamos aquí el problema y su solución para que otros desarrolladores no pierdan tiempo investigando.
Error encontrado: Al ejecutar la acción de CI aparece el mensaje de error indicando incompatibilidad de versión y el fallo concreto crypto.hash no es una función. Mensaje traducido: Estás usando Node.js 18.20.8. Vite requiere Node.js versión 20.19+ o 22.12+. Por favor actualiza tu versión de Node.js. [vite:asset] No se pudo cargar /vite.svg (importado por src/App.tsx): crypto.hash no es una función. GitHub Actions estaba usando Node.js 18. Vite v7 requiere Node.js 20.19+ o 22.12+. Esto provocó la falla en la construcción.
Causa: Vite v7 añade dependencias o llamadas a API de Node que no están disponibles en Node 18, por ejemplo el uso de funciones criptográficas que cambiaron entre versiones. GitHub Actions puede usar por defecto una versión anterior de Node, por lo que aunque en local todo funcione, el pipeline falla.
Solución recomendada paso a paso: 1 Actualizar la versión de Node en la configuración de CI/CD de GitHub Actions especificando Node 22. Por ejemplo, usar la acción actions/setup-node@v3 con node-version: 22. 2 Ejecutar una instalación limpia de dependencias con npm ci para asegurar versiones reproducibles. Ejemplo de configuración dentro de jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 22 - name: Install dependencies run: npm ci - name: Run build run: npm run build Con esto la compilación debería completarse correctamente.
Alternativas: Si no puedes actualizar a Node 22 por restricciones de proyecto, considera pinnear Vite a una versión compatible con Node 18 o usar un contenedor Docker que contenga la versión de Node requerida. Sin embargo la opción más limpia y recomendada es alinear el entorno de CI con las versiones soportadas oficialmente por Vite.
Resumen: Vite v7 no es compatible con Node.js 18. GitHub Actions puede usar por defecto una versión anterior. Actualizar Node a la versión 20 o mejor 22 resuelve el problema y evita el error crypto.hash no es una función.
Sobre Q2BSTUDIO: En Q2BSTUDIO somos una empresa de desarrollo de software que crea soluciones a medida para empresas, desde aplicaciones a medida hasta integraciones complejas en la nube. Contamos con experiencia en inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, y en inteligencia de negocio y Power BI para ayudar a transformar datos en decisiones estratégicas.
Servicios y palabras clave: Si necesitas software a medida, soluciones de inteligencia artificial para empresas, auditorías de ciberseguridad o despliegues en la nube, Q2BSTUDIO ofrece servicios profesionales en aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Podemos apoyar desde la consultoría inicial hasta la implementación y el mantenimiento continuo.
Contacto y siguiente paso: Si te interesa que revisemos tus pipelines de CI/CD, optimicemos tu arquitectura cloud o añadamos capacidades de IA a tus aplicaciones, ponte en contacto con nuestro equipo para una consultoría. También ofrecemos servicios específicos de seguridad y pentesting para asegurar que tus despliegues en plataformas como Firebase sean confiables y seguros.
Nota final: Mantener actualizadas las herramientas del entorno de desarrollo y CI es clave para evitar errores como crypto.hash no es una función. Si implementas la solución descrita y necesitas apoyo técnico, en Q2BSTUDIO podemos ayudarte a migrar y asegurar tus proyectos.
Comentarios