Errores y códigos de salida
Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 5 de 33.
Cuando falla un comando, la persona que está en la terminal necesita saber por qué, y cualquier programa que haya ejecutado el tuyo necesita saber que falló.
Un programa tiene dos flujos de salida: stdout para los resultados y stderr para los errores, que se escriben con console.error. Cuando termina, devuelve un código de salida: 0 significa que funcionó; cualquier otro valor significa que falló. process.exit(1) detiene el programa de inmediato con el código 1.
// node divide.js 6 0
const [a, b] = process.argv.slice(2).map(Number);
if (b === 0) {
console.error('Cannot divide by zero');
process.exit(1);
}
console.log(a / b);La terminal junto a tu código muestra stderr en rojo e imprime el código de salida cuando no es 0.
Desafío
FácilCuando alguien usa tu herramienta de forma incorrecta, debería indicar cómo usarla y decirle a la terminal que hubo un error. Los programas hacen esto mediante el flujo de errores, stderr, y un código de salida.
- En
notes.js, cambia la ramaelsefinal, la que imprimeUnknown command:. Los errores van a stderr, así que imprímelos conconsole.erroren lugar deconsole.log. - Cuando se haya escrito un comando, pero este sea desconocido, imprime estas dos líneas en stderr, en este orden:La primera línea indica la palabra que se escribió: aquí,
Unknown command: remove Usage: node notes.js <command> [words]remove, denode notes.js remove 3. La segunda línea siempre es la misma. Cópiala exactamente, con<command>y[words]tal como están escritos: forman parte del texto, no son elementos que haya que completar. - Cuando no se haya escrito nada después de
node notes.js, imprime solo la línea de uso en stderr. No imprimasUnknown command: undefined. - En ambos casos, termina el programa con el código de salida 1, que significa «falló».
addylistfuncionan como antes.node notes.js add Buy milksigue imprimiendoAdding: Buy milky termina con el código de salida 0.
Pruébalo: pulsa Ejecutar con el cuadro después de $ node notes.js vacío. Verás la línea de uso en rojo y la terminal mostrará el código de salida 1. Luego escribe remove 3 y pulsa Intro: verás Unknown command: remove y la línea de uso, ambas en rojo, y el código de salida 1. Luego escribe add Buy milk: verás Adding: Buy milk en el color normal y no aparecerá ningún código de salida, porque la terminal oculta el 0.
Pruébalo tú mismo
// Tu herramienta de notas comienza aquí.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');
if (command === 'add') {
console.log(`Adding: ${text}`);
} else if (command === 'list') {
console.log('No notes yet');
} else {
console.log(`Unknown command: ${command}`);
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Conceptos básicos de Node.js
1Ejecutar JavaScript en Node
Hola, NodeLeer el comandoArgumentos de línea de comandosComandosPractica por tu cuenta: Playground de Express