2
respostas

Erro ao executar o programa

Após inserir as linhas de código abaixo, o programa passou a dar o erro abaixo:

[Error: EISDIR: illegal operation on a directory, read] { errno: -4068, code: 'EISDIR', syscall: 'read' }

Vou inserir meu código para vocês verem se há algo que esteja incorreto. Obs: Os dois primeiros métodos funcionam perfeitamente. Vou inserir também minha estrutura de pastas!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

import chalk from 'chalk'; //Não é nativa do JS import fs from 'fs'; //Nativa do JS

function trataErro(erro){ console.log(erro); throw new Error(chalk.red(erro.code, 'Não há arquivo')); }

//Metodo utilizando async / await

async function pegaArquivo(caminhoDoArquivo){ const encoding = 'utf-8'; const texto = await fs.promises.readFile (caminhoDoArquivo, encoding) console.log(texto); }

//Método assincrono de execução da função nativo JS promises.readFile

// function pegaArquivo(caminhoDoArquivo){ // const encoding = 'utf-8'; // fs.promises // .readFile(caminhoDoArquivo, encoding) // .then((texto)) => console.log(chalk.green(texto)) // .catch(trataErro)

// }

//Método sincrono de execução

// function pegaArquivo(caminhoDoArquivo){ // const encoding = 'utf-8'; // fs.readFile(caminhoDoArquivo, encoding, (erro, texto) => { // if (erro) { // trataErro(erro); // } else { // console.log(chalk.green(texto)); // }

// }) // }

pegaArquivo('./arquivos/');

2 respostas

Consegui descobrir o motivo do erro, faltou voltar o nome do arquivo texto.md . Outro problema que identifiquei é que se colocar a chamada da função duas vezes, a primeira não executa corretamente, apenas se eu chama-las de forma individual.

Olá Cesar! Tudo bem contigo?

Parabéns pela sua dedicação em resolver o problema!

Identificar e corrigir erros no código é uma habilidade essencial para qualquer desenvolvedor, e você se saiu muito bem nessa tarefa.

De fato, o erro que você estava enfrentando ocorreu porque você estava tentando ler um diretório em vez de um arquivo. O código estava apontando para o diretório "./arquivos/" em vez do arquivo específico "texto.md". Isso resultou no erro "[Error: EISDIR: illegal operation on a directory, read]". Ao corrigir esse problema e apontar para o arquivo correto, você conseguiu resolver o erro e o programa passou a funcionar corretamente.

Outro ponto interessante que você observou é que ao chamar a função duas vezes seguidas, a primeira chamada não estava executando corretamente. Isso acontece porque a primeira chamada provavelmente não tinha tempo suficiente para terminar sua execução antes que a segunda chamada fosse feita, o que pode levar a comportamentos inesperados. Esse é um ponto importante a ser lembrado ao trabalhar com funções assíncronas como a que você implementou.

Continue assim, mantendo-se atento aos detalhes e depurando seu código com eficiência.

Isso o tornará um programador cada vez mais habilidoso.

Se tiver mais dúvidas ou precisar de ajuda em outros aspectos do seu projeto, sinta-se à vontade para perguntar.

Estou aqui para ajudar!

Sucesso em seus projetos futuros!

Abraço e bons estudos.