1
resposta

[Bug] erro no terminal ao executar o código

const fs = require('fs');

const caminhoArquivo = process.argv;
const link = caminhoArquivo[2];

fs.readFile(link, 'utf-8', (erro, texto) => {
    console.log('qual e o erro?', erro);
    contaPalavras(texto);
})

function contaPalavras(texto) {
    const paragrafo = extraiParagrafos(texto)
    const contagem = paragrafos.flatMap((paragrafo)=> {
      if (!paragrafo) return [];
      return verificaPalavrasDuplicadas(paragrafo);
    })
    console.log(contagem);
}

function extraiParagrafos(texto) {
  return texto.toLowerCase().split('\n');
}

function limpaPalavras(palavras) {
    return palavra.replace(/.,\/#!$%\^&\*;:{}=\-_`~()]/g, '');
}

function verificarPalavrasDuplicadas(texto) {
    const listasPalvras = texto.split(' ');
    const resultado = {};
    listasPalvras.forEach(palavra =>{
        if (palavra.lenght >= 3) {
            const palavraLimpa = limpaPalavras(palavra);
            resultado[palavraLimpa] = (resultado[palavraLimpa] || 0) + 1
        }
    })
    return resultado;
    
    
}

codigo com erro no terminal

1 resposta

O erro que você está enfrentando é este:

Error: Cannot find module 'C:\Users\Ricardo\Desktop\NODE JS\src\index.js'

Isso está acontecendo porque você executou:

node src/index.js arquivos/texto-web.txt

Mas olhando para a estrutura do seu projeto (no painel esquerdo do VS Code), o caminho correto do arquivo index.js é:

3709-nodejs-lib-arquivos-iniciais/src/index.js

Como corrigir

No terminal, você deve rodar:

node 3709-nodejs-lib-arquivos-iniciais/src/index.js 3709-nodejs-lib-arquivos-iniciais/arquivos/texto-web.txt

Além disso, identifiquei alguns erros no seu código:

1. verificaPalavrasDuplicadas está escrito errado na chamada

Você declarou a função com verificarPalavrasDuplicadas, mas chamou com verificaPalavrasDuplicadas.

Corrija isso:

return verificarPalavrasDuplicadas(paragrafo);

2. palavra.lenght está escrito errado

O correto é .length:

if (palavra.length >= 3) {

3. A função limpaPalavras recebe palavras, mas usa palavra

Troque o parâmetro para palavra:

function limpaPalavras(palavra) {
  return palavra.replace(/.,\/#!$%\^&\*;:{}=\-_`~()]/g, '');
}