Fundamentos de CommonJS: require/module.exports y exports
Aprenda CommonJS: require(), module.exports, el atajo exports y una pequeña introducción a la interoperabilidad con ESM.
Fundamentos de CommonJS: require/module.exports y exports es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.
CJS: visión general
Objetivo: lea y escriba módulos pequeños de CommonJS.
- require() carga módulos
- module.exports es el objeto de exportación
- exports es un acceso directo al mismo objeto
- Aspectos básicos de interoperabilidad con ESM

require() — idea
require(path) devuelve el objeto exportado del módulo en CommonJS.
// CommonJS import uses require()
const cjsExample = [
"const math = require(\\"./math.js\\");",
"console.log(math.sum(2, 3));"
];
console.log("require() example:");
for (const line of cjsExample) console.log(line);
// Emulate a loaded module object
const loaded = { sum: function (a, b) { return a + b; } };
console.log("emulated require sum:", loaded.sum(2, 3));
module.exports
Asigne un valor a module.exports para exportarlo (función, objeto, etc.).
// module.exports sets what the module returns
const lines1 = [
"function greet(name) { return \\"Hi \\" + name; }",
"module.exports = greet;"
];
console.log("module.exports example:");
for (const l of lines1) console.log(l);
// Emulate consumption
function greet(name) { return "Hi " + name; }
const api1 = greet; // like module.exports = greet
console.log("use exported fn:", api1("Ayla"));
Acceso directo exports
exports.prop = ... es correcto; no reasigne exports = ... porque ya no apunta a module.exports.
// exports is a shortcut to module.exports (same object)
const lines2 = [
"// Good: add properties",
"exports.sum = function (a, b) { return a + b; };",
"",
"// Pitfall: reassigning exports breaks the link",
"exports = function () {}; // WRONG"
];
console.log("exports shortcut:");
for (const l of lines2) console.log(l);
// Emulate good usage
const moduleObj = {};
const exportsRef = moduleObj; // like exports === module.exports initially
exportsRef.sum = function (a, b) { return a + b; };
console.log("sum via exportsRef:", moduleObj.sum(2, 4));
Varias exportaciones
Puede exportar un objeto que contenga muchas funciones y leerlas mediante sus propiedades.
// Export an object with multiple members
const lines3 = [
"function add(a, b) { return a + b; }",
"function mul(a, b) { return a * b; }",
"module.exports = { add, mul };"
];
console.log("multiple exports object:");
for (const l of lines3) console.log(l);
// Emulate consumption
const api2 = {
add: function (a, b) { return a + b; },
mul: function (a, b) { return a * b; }
};
console.log("use add/mul:", api2.add(1, 2), api2.mul(2, 3));
Aspectos básicos de ESM ↔ CJS
Interoperabilidad (visión general):
- Al importar CJS desde ESM, normalmente se recibe module.exports de CJS como default.
- Ejemplo: import pkg from "./cjs.js" y después use pkg.add().
- Mantenga los ejemplos sencillos; evite mezclar estilos en un mismo archivo salvo que sea necesario.

Cuestionario sobre sintaxis de exportación de CJS
Comprobación rápida: exportación en CommonJS.

Repaso
Repaso: cargue con require(), exporte con module.exports, añada propiedades mediante exports.prop y evite reasignar exports. La interoperabilidad con ESM suele asignar module.exports de CJS a una exportación predeterminada.

Preguntas frecuentes
¿La lección «Fundamentos de CommonJS: require/module.exports y exports» es gratis?
Sí — el texto completo de «Fundamentos de CommonJS: require/module.exports y exports» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Fundamentos de CommonJS: require/module.exports y exports»?
Aprenda CommonJS: require(), module.exports, el atajo exports y una pequeña introducción a la interoperabilidad con ESM. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Fundamentos de CommonJS: require/module.exports y exports»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Fundamentos de ESM: import/export, default frente a named
- Fundamentos de CommonJS: require/module.exports y exports
- Resolución de módulos en Node y bundlers del navegador