CodeAventura
Node.js
▸Primeros pasos con Node.js▸Módulos modernos (import/export)

Misión

// Exporta una función usando la sintaxis export

TerminalTema: Vintage
05 / 15Módulos modernos (import/export)
Anterior

Módulos modernos: import y export

La evolución de los módulos

CommonJS fue el primer sistema de módulos de Node.js y cumplió su misión durante más de una década. Pero el lenguaje JavaScript evolucionó, y en 2015 llegó una forma nativa de manejar módulos: ES Modules (o ESM).

La diferencia principal es la sintaxis:

CommonJSES Modules
require("...")import ... from "..."
module.exportsexport

Si has trabajado con React, Vue o cualquier framework moderno, ya has visto import y export. Esa es la sintaxis ESM.

Un requisito importante

Para que Node.js entienda import y export en archivos .js, necesitas indicarlo en tu package.json:

Sin esa línea, Node asume que usas CommonJS y import dará un error. Es el interruptor que le dice a Node: "este proyecto usa módulos modernos".

Ejemplo completo

package.json

utils.js — exportar con export

index.js — importar con import

Observa un detalle importante: en ESM, la extensión .js en el import es obligatoria. En CommonJS podías omitirla, pero aquí no.

Export default vs export con nombre

ESM tiene dos formas de exportar:

Export con nombre (puedes tener varios):

Export default (solo uno por archivo):

El import cambia según cuál uses:

¿Cuándo usar ESM y cuándo CommonJS?

La regla general es simple:

  • Proyecto nuevo → usa ESM ("type": "module")
  • Proyecto existente con require → mantén CommonJS
  • No mezcles ambos en el mismo proyecto si puedes evitarlo

La industria se está moviendo hacia ESM, pero la transición es gradual. Por eso es importante conocer ambos sistemas — en tu carrera te encontrarás con los dos.

Tu desafío 🚀

  1. Configura "type": "module" en package.json
  2. En utils.js, exporta una función usando export
  3. En index.js, impórtala con import ... from "./utils.js"
  4. Muestra el resultado con console.log
  5. Ejecuta node index.js en la terminal

Ahora dominas las dos caras de los módulos en Node.js. Puedes trabajar en cualquier proyecto, sea legacy o moderno.