Estoy ejecutando comandos de script de shell desde mi script nodejs. Uno de estos comandos es "npm install" seguido de un comando para ejecutar el archivo de índice de un archivo nodejs.
El comando de instalación npm devuelve un error generado por node-gyp. En general, este error no afecta mi servicio. Sin embargo, child_process.exec lo detecta y detiene el script. Mi pregunta es, ¿cómo activo el comando exec e ignoro el error devuelto?
A continuación se muestra una fracción del fragmento de código
const exec = require('child_process').exec; exec("npm install", { cwd: serviceDirectory + gitRepo }, (error1, stdout, stderr) => { if(error1){ //this error is for testing purposes util.log(error1); } //run the service exec("node index.js",{ cwd: serviceDirectory + gitRepo + "/" }, cb); }); }Puede usar try-catch para manejar los errores con catch, ejemplo:
const { promisify } = require('util'); const exec = promisify(require('child_process').exec); export default async function () { const dataFormat = { stdout: '', stderr: '', }; let cpu = dataFormat; let diskUsed = dataFormat; try { cpu = await exec('top -bn1 | grep "Cpu(s)" | sed "s/.*, *\\([0-9.]*\\)%* id.*/\\1/"'); } catch (error) { cpu.stderr = error.stderr; } try { diskUsed = await exec("df -h | awk 'NR==2{printf $3}'"); } catch (error) { diskUsed.stderr = error.stderr; } const payload = { cpu, diskUsed, }; return payload }