Oi pessoal, tudo bem? Estou tentando replicar o conteúdo da aula considerando algumas mudanças e ajustes. No entanto estou enfrentando alguns problemas pra conseguir fazer meu código rodar com as promisses e funções assíncronas. Por exemplo:
Um pouco diferente da aula, eu criei a estrutura de arquivos da seguinte forma:
cli.js --> para rodar o cli e as entradas do código erros.js --> para gravar o logo dos erros limpaPequenas --> arquivo que contém a função para limpar os caracteres especiais separadorPalavras --> arquivo que contém a função para separar o texto por palavras separadorParagrafos ->> arquivo que contém a função para separar o texto por parágrafos
Problema: Não estou conseguindo fazer com que a função readfile no cli.js receba o array de objetos que contém a contagem das palavras vindas do arquivo limpaPequenas.js na função elimina pequenas. Com isso, não consigo fazer com o que o código chegue a rodar a função assícrona criarArquivoLog para poder fazer a gravação do arquivo de log com o erro de input que estou tentando forçar no terminal.
//cli.js
import fs from 'fs';
import separaPagrafo from './separadorParagrafo.js';
import tratamentoErros from './erros.js';
import { eliminaPequenas } from './limpaPequenas.js';
import { separaPalavras } from './separadorPalavras.js';
const textoCapturado = process.argv[2]
const textoGravado = process.argv[3]
fs.readFile(textoCapturado, 'utf8', (error, texto) => {
try{
if(error) throw error
const resultadoObj = separaPagrafo(texto)
criarArquivoLog(resultadoObj, textoGravado)
}
catch(error){
tratamentoErros(error)
/* if (error.code === 'ENOENT') console.log('erro esperado', error.code);
else console.log ('então é outro erro', error.code) */
}
})
async function criarArquivoLog(resultadoObj, path){
console.log(resultadoObj)
const resultadoObjJSON = JSON.stringify(resultadoObj);
const caminhoArquivo = `${path}/teste.txt`;
//erros.js
export default function tratamentoErros (erro){
if (erro.code === 'ENOENT'){
throw new Error('arquivo não encontrado')
}
else{ console.log ('então é outro erro')}
}
//limpaPequenas.js
export function eliminaPequenas(palavras){
const objCount = {};
//console.log(palavras)
palavras.forEach(palavrasPequenas => {
const pequenasElimin = palavrasPequenas.replace(/[.,\/#!$%\^?&\*;:{}=\-_`~()]/g, '')
//console.log(pequenasElimin)
if(pequenasElimin.length >3){
objCount[pequenasElimin] = ((objCount[pequenasElimin] || 0) + 1);
}
})
//console.log(objCount)
return objCount}
//separadorPalavras.js
import { eliminaPequenas } from "./limpaPequenas.js";
export function separaPalavras(texto){
texto.forEach(paragrafo => {
eliminaPequenas(paragrafo.toLowerCase().split(' '))
})
}
//separadorParagrafo.js
import {separaPalavras} from "./separadorPalavras.js";
export default function separaPagrafo(texto){
const splitDeParagrafos = texto.split('\n');
//console.log(splitDeParagrafos)
const vetorParagrafo = splitDeParagrafos.map(paragrafo => {
return paragrafo
//console.log(objCont)
//separaPalavras(splitDeParagrafos);
})
//console.log(vetorParagrafo)
separaPalavras(vetorParagrafo);
}
Agradeço muito se puderem contribuir para contornar aqui.
Obrigado!