1
resposta

(NODE) (ASYNC E AWAIT) Não está exibindo corretamente o conteúdo em caso de erro em promises

Bom dia! estou fazendo a segunda aula do curso criando sua biblioteca NodeJS: criando sua biblioteca.

O programa está fluindo bem, só que ao invés de aparecer apenas o conteúdo em casos de rejected da promisse, está aparecendo, literalmente, a linha de código toda no terminal, segue o que estou falando:

PS C:\projetos git\Alura> node .\async_Await.js
C:\projetos git\Alura\async_Await.js:5
throw new Error(erro,'Não foi possível fazer a primeira leitura do readFile')
      ^

Error: Error: EISDIR: illegal operation on a directory, read
    at trataErro (C:\projetos git\Alura\async_Await.js:5:7)
    at pegaArquivo (C:\projetos git\Alura\async_Await.js:15:9)

percebe-se que na linha 3 ao invés de aparecer o erro e o texto, aparece a linha de código completa "throw new Error(erro,'Não foi possível fazer a primeira leitura do readFile')"

Alguém sabe o porquê? Eu queria apenas aparecer o erro e texto.

ABAIXO O CÓDIGO:

const chalk = require('chalk');
const fs = require('fs');

function trataErro(erro) {
throw new Error(erro,'Não foi possível fazer a primeira leitura do readFile')
}

async function pegaArquivo(caminhodoArquivo) {
    const encoding = 'utf-8'
    try{
        const texto = await fs.promises.readFile(caminhodoArquivo, encoding)
        console.log(texto)
    }
    catch(erro){
        trataErro(erro)
    }
}

pegaArquivo('./arquivos')
1 resposta

Olá, Lucas! Tudo bem?

Peço desculpa pela demora em responder o seu tópico.

O erro apresentado é o "EISDIR", o mesmo é responsável por informar que a operação que você está querendo realizar é com um diretório e não com um arquivo.

E analisando o seu código, percebi que quando você chama a função pegaArquivo, você passa o caminho ./arquivo. Contudo, essa forma você estará endereçando o diretório "arquivos" para a função e não os arquivos presentes nele.

Então, para resolver o seu problema, você deve alterar o seu caminho adicionando uma "/" ao fim dele. Pois dessa forma irá referenciar os arquivos presentes dentro do diretório/pasta "arquivos". Segue o exemplo de como ficaria:

pegaArquivo('./arquivos/')

Espero ter ajudado. Caso tenha mais problemas ou dúvidas relacionadas com este tópico, estarei à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.