Node JS - Não encontro os erros

08/08/2022

0

Boa Tarde Pessoal.

Tenho dois (2) códigos (arquivos) em JS (node js):

O Primeiro (software.js) é a função que obtém informações de softwares instalados no sistema operacional:
/* *********************************************** */
/*          MÓDULO LEITURA DE SOFTWARE             */
/*        VERSÃO: 1.0 - DATA: 27/05/2022           */
/* *********************************************** */


const exec = require('child_process').exec;


var xml = "";


(getInfo = async () => {
   xml += "<softwares>";
   exec("wmic product get name, version, installdate /format:csv", (error, stdout, stderr) =>{ 
      if (error) {
         console.error("error: ", error.message);
         return;
       }
     
       if (stderr) {
         console.error("stderr: ",stderr);
         return;
       }
      
      //console.log('stdout: ', stdout);
       linhas = stdout.split(/\r?\n/); 
       countLines = 0; //console.log(linhas);
       linhas.forEach(function (linha){ 
          if((countLines >= 3) && (countLines <= (linhas.length - 2))){//Desconsidera 1 e 2 linha e ultima
//console.log(countLines); console.log(linha);
               linha = linha.split(','); 

               var data = new String(linha[1]); 
               var nome = new String(linha[2]);
               var versao = new String(linha[3]);

         try{ 
               var dia = data.substr(6,2);
               var mes = data.substr(4,2);
               var ano = data.substr(0,4); 
            }catch(err){
               console.log("Linha Num.:" + countLines);
               console.log("Error Name: " + err.name);
               console.log("Error Message: " + err.message);
            }

               xml += "<software>"; 
               xml += "<name>" + nome.toString() + "</name>";
               xml += "<version>" + versao.toString()  + "</version>";
               xml += "<date>" + dia + '/' + mes + '/' + ano + "</date>";
               xml += "</software>";
              // console.log(countLines);
               //console.log(linha[1] + "--" + linha[2] + "--" + linha[3]);
          }
          countLines = countLines + 1;
      });//fim forEach

      xml += "</softwares>";
    
      console.log(xml);
      //return xml;
   });//Fim Exec
})();//Fim getInfoSoftwares

module.exports = {
    getInfo
};


E o segundo código é o arquivo (main.js) onde chamo a função getinfo do software.js:
  /* *********************************************** */
/*            MÓDULO PRINCIPAL - MAIN              */
/*        VERSÃO: 1.0 - DATA: 18/06/2022           */
/* *********************************************** */

const PATH = "./";
const FILE_NAME = "inventory.xml";

const HEADER_XML = "<?xml version='1.0' encoding='UTF-8'?>";

(main = async () => {

    //const identifier = require('./identifier');
    //const hardware = require('./hardware');
    const software = require('./software');

    const file = require('./file');

    //let infoIdentifier = new String(await identifier.getInfo());
    //let infoHardware = new String(await hardware.getInfo());
    let infoSoftware = new String(await software.getInfo());

    //console.log(infoIdentifier);
    //console.log(infoHardware);
    console.log(infoSoftware);

    if(infoSoftware.length > 0 ){
        
        console.log('Informações obtidas com sucesso');
        
        let xml = HEADER_XML;

        xml += "<inventory>";
        //xml += infoIdentifier.toString();
        //xml += infoHardware.toString();
        xml += infoSoftware.toString();
        xml += "</inventory>";

        if(file.writeFile(xml, FILE_NAME, PATH)) //Grava em arquivo usando o modulo fs no arquivo file.js
           console.log('Arquivo gravado com sucesso!');
        else
           console.log('Erro na gravação do arquivo!');

    }
    else{
        console.log('Erro em obter informações!');
    }
})();


Gostaria de saber se poderiam me ajudar com os seguintes erros que não consigo encontrar a causa de forma alguma.

-> O primeiro erro é que quando chamo no terminal o software.js para testá-lo individualmente, este só me retorna uma linha com apenas um software, sendo que deveria retornar várias linhas com todos os softwares, formatado com as tags.
-> O segundo erro é que quando a função software.getInfo() é chamada no arquivo main.js esta me retorna 'undefinide'.

Pessoal, se puderem me ajudar fico muito grato, pois não consigo encontrar onde estão os erros no código.
Gabriel Sari

Gabriel Sari

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar