Cuando trabajamos con JavaScript en Node.js, especialmente al utilizar la declaración import
, es común considerar agregar "type": "module"
en el archivo package.json
. Sin embargo, esto puede causar un problema si se intenta usar características de CommonJS, como exports
.
Problema
Al tener "type": "module"
en package.json
, el archivo JavaScript se trata como un módulo ES (ESM). Esto significa que no se pueden utilizar las características de CommonJS, como exports
, ya que simplemente no están definidas en este contexto. Si se intenta ejecutar un archivo que contiene exports
en un entorno ESM, se producirá un error de tipo ReferenceError: exports is not defined in ES module scope
.
Solución
Para corregir este problema, una solución directa es eliminar la entrada "type": "module"
en el archivo package.json
. Esto cambiará el comportamiento del archivo JavaScript de módulo ES a CommonJS, lo que permitirá el uso de exports
sin problemas.
Alternativamente, si se desea utilizar la sintaxis de módulos ES y se necesita seguir utilizándola, se debe renombrar el archivo JavaScript a utilizar la extensión .cjs
para que Node.js lo trate como un script CommonJS.
Al implementar estas sugerencias, el error de exports
no debería volver a aparecer, y podrás ejecutar tu código sin problemas.