Saltar al contenido principal
Node.js

Solución: Cannot use import statement outside a module en Node.js

Node.js lanza SyntaxError al usar import/export de ES Modules. Tres formas de solucionarlo según tu proyecto: package.json, extensión .mjs o configuración de Babel/TypeScript.

Error: SyntaxError: Cannot use import statement outside a module

¿Por qué ocurre?

Node.js usa CommonJS (require/module.exports) por defecto. Cuando escribes `import` sin configurar el proyecto como ES Module, Node lanza este error. Ocurre al mezclar paquetes ESM con código CommonJS o al seguir tutoriales que asumen configuración distinta a la tuya.

Solución paso a paso

Opción 1 — Añadir \"type\": \"module\" en package.json (recomendado para proyectos nuevos):

{
  "type": "module"
}

Con esto todos los archivos .js del proyecto se tratan como ES Modules y puedes usar import/export libremente.

⚠ Importante: al activar "type": "module" ya no puedes usar require(). Si tienes código antiguo con require, migrarlo o usa la opción 2.

Opción 2 — Renombrar el archivo a .mjs:

# Renombra tu archivo
mv index.js index.mjs

Los archivos .mjs siempre se tratan como ESM sin importar el package.json.

Opción 3 — Cambiar los import a require (si quieres seguir en CommonJS):

// ❌ ESM — falla en CommonJS
import express from 'express';
import { readFile } from 'fs';

// ✅ CommonJS equivalente const express = require('express'); const { readFile } = require('fs');

Opción 4 — Si usas TypeScript, configura tsconfig.json:

{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext"
  }
}

Cómo evitarlo en el futuro

Decide desde el principio si tu proyecto es ESM o CommonJS y sé consistente. Para proyectos nuevos en Node 18+, usa `"type": "module"`. Para proyectos legacy o librerías que necesiten compatibilidad máxima, quédate en CommonJS con `require`.

Node.jsJavaScriptES ModulesError

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.