Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

290
Vistas
CLI para la aplicación de tareas: ¿ayuda a depurar la solución actual usando Commander o cambiar el enfoque a Readline y Event Emitter?

Estoy tratando de construir una CLI para una aplicación de tareas únicas del nodo js usando los módulos de comandante y conf en el nodo js, con tiza para colorear la salida. No estoy seguro de cómo resolver los errores que se devuelven:

ReferenceError: require no está definido en el alcance del módulo ES, puede usar importar en su lugar. Este archivo se trata como un módulo ES porque tiene una extensión de archivo '.js' que contiene "tipo": "módulo". Para tratarlo como un script CommonJS, cámbiele el nombre para usar la extensión de archivo '.cjs'.

Recibo el error anterior tanto para conf como para comandante

Cualquier sugerencia sobre cómo podría depurar esto, o cambiar el enfoque para usar readline y events/EventEmitter sería mejor, será apreciada, gracias

A continuación se muestra una versión CENSURADA del código:

lista.js

 const conf = new (require('conf'))(); const chalk = require('chalk'); function list() { const todoList = conf.get('todo-list'); if (todoList && todoList.length) { console.log( chalk.blue.bold( 'Tasks in green are done. Tasks in yellow are still not done.' ) } } module.exports = list;

archivo index.js

 const { program } = require('commander'); const list = require('./list'); program.command('list').description('List all the TODO tasks').action(list); program.command('add <task>').description('Add a new TODO task').action(add); program.parse();

archivo paquete.json

 { "main": "index.js", "type": "module", "keywords": [], "dependencies": { "chalk": "^5.0.0", "chalk-cli": "^5.0.0", "commander": "^8.3.0", "conf": "^10.1.1" }, "bin": { "todos": "index.js" } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En tu package.json tienes:

 "type": "module",

Esto significa que se supone que los archivos con el sufijo .js son ECMAScript en lugar de CommonJS. Si desea utilizar CommonJS, puede cambiar el sufijo del archivo o cambiar la propiedad "type" .

O puede usar la nueva sintaxis. En ECMAScript usa import , en CommonJS usa require .

Para leer más sobre "tipo", consulte: https://nodejs.org/dist/latest-v16.x/docs/api/packages.html#determining-module-system

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de investigar un poco más, descubrí que estaba "enturbiando las aguas" entre los módulos CJS o ESM. Los módulos CJS usan require y esa es la forma antigua de hacer las cosas antes de los módulos ES6 Los módulos ESM usan import

Mi paquete.json dice tipo: módulo que le dice a NodeJS que estoy usando ESM. Pero el código dice CJS.

Estos son los pasos que tomo para solucionar esto:

  • cambiar el nombre de index.js a index.mjs
  • actualizar package.json en consecuencia
  • reemplace todas las llamadas requeridas con declaraciones de importación
  • reemplace module.exports = list con export predeterminado = list (o use una exportación con nombre)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda