Introducción
Uno de los errores más comunes y frustrantes a los que se enfrentan los desarrolladores de JavaScript al trabajar con el entorno de ejecución Node.js es el infame Error: Cannot find module. Este fallo detiene la ejecución de la aplicación de manera abrupta, impidiendo que el servidor o el script inicien correctamente. Ya sea que estés desarrollando una API con Express o ejecutando un script simple, este problema suele estar ligado a dependencias faltantes o rutas de importación incorrectas.
Causas principales del error Cannot find module
Para solucionar este problema de raíz, es fundamental entender por qué se produce. Las causas más frecuentes incluyen:
- La dependencia o paquete no ha sido instalado en el proyecto.
- La carpeta
node_moduleso el archivopackage-lock.jsonestán corruptos o desincronizados. - Has especificado una ruta relativa incorrecta al importar un archivo local (por ejemplo, usar
./o../de manera errónea). - Estás utilizando módulos de ES (import/export) y CommonJS (require) de forma cruzada sin la configuración adecuada en el archivo
package.json.
Método 1: Reinstalar las dependencias del proyecto
Si el error hace referencia a un paquete de terceros instalado vía npm o yarn (como express, mongoose, etc.), lo más probable es que falte en tu entorno local.
- Abre tu terminal en la raíz del proyecto.
- Elimina la carpeta de dependencias existente y el archivo de bloqueo ejecutando:
rm -rf node_modules package-lock.json(en Windows usarmdir /s /q node_modulesy borra el archivo manualmente). - Limpia la caché de npm con el comando:
npm cache clean --force. - Vuelve a instalar todas las dependencias limpias ejecutando:
npm install.
Método 2: Verificar y corregir las rutas relativas en tus archivos
Cuando el error apunta a un archivo creado por ti (por ejemplo: Cannot find module './utils/helper'), el problema radica en que Node.js no puede encontrar la ruta física del archivo.
- Abre el archivo donde se genera el error y localiza la línea de importación (
requireoimport). - Comprueba que la ruta empiece explícitamente con
./o../si se trata de un archivo local. Node.js buscará ennode_modulespor defecto si omites estos prefijos. - Asegúrate de que la extensión del archivo coincida o que la estructura de carpetas sea exactamente la que escribiste en el código.
Método 3: Configurar correctamente el archivo package.json
Si estás migrando tu código moderno a módulos de ES o viceversa, asegúrate de declarar el tipo de módulo correctamente.
- Abre tu archivo
package.jsonen la raíz. - Añade o verifica la propiedad
"type". Para usar la sintaxis moderna deimport/export, define:"type": "module". Si prefieres la sintaxis tradicional de Node, define:"type": "commonjs". - Guarda los cambios y reinicia tu servidor de desarrollo.