3
respostas

[Dúvida] log do "carregaArquivo()" não aparece em um caso específico

Tentei fazer como a instrutora, que roda a função carregaArquivo() com o parâmetro certo e, em seguida, com o parâmetro errado. Porém, usei o parâmetro errado de forma diferente: invés de "./arquivos/" usei "./arquivos/texto", ou seja, usei o nome do arquivo mas sem sua extensão.

O output do console foi esse:

node .\index.js
Processo concluido.
file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:5
    throw new Error(chalk.red(erro));
          ^

Error: Error: ENOENT: no such file or directory, open 'D:\Users\vinicius.pessoa\Documents\Alura\Node.js - Criando sua primeira biblioteca\Projeto\arquivos\text'
    at trataErro (file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:5:11)
    at carregaArquivo (file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:16:9)

Como podem ver, o primeiro processo é concluído, mas sem mostrar o texto. (sim, estou printando o texto na função, e o arquivo não está vazio.)

Mas quando coloco o parâmetro usado pela instrutora, o texto do arquivo aparecer ("testo teste de MD").

node .\index.js
testo teste de MD
Processo concluido.
Processo concluido.
file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:5  
    throw new Error(chalk.red(erro));
          ^

Error: Error: EISDIR: illegal operation on a directory, read
    at trataErro (file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:5:11)
    at carregaArquivo (file:///D:/Users/vinicius.pessoa/Documents/Alura/Node.js%20-%20Criando%20sua%20primeira%20biblioteca/Projeto/index.js:16:9)

Gostaria de saber por quê isso ocorre.

3 respostas

Olá, Vinicius! Tudo bem?

Isso ocorre pelo fato de que, quando você usa o parâmetro errado de sua escolha, você está tentando abrir um arquivo que não existe ou que não pode ser encontrado, pelo fato de não existir nenhum diretório com o nome passado, por isso o erro ENOENT, que representa exatamente isso.

Já quando você usa o outro parâmetro ocorre o erro esperado, que seria de informar um diretório, que existe, mas no input é requerido um arquivo, logo, no erro vai ser informado que o que foi passado é um diretório.

Espero ter conseguido esclarecer a sua dúvida. Caso ainda tenha alguma pergunta, com relação a este tópico, estarei à disposição para ajudá-lo.

Abraços e bons estudos!

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

Entendi, mas por quê a chamada com o parâmetro certo não imprime no primeiro caso, só no segundo?

Opa Vinicius, peço perdão pela demora em retornar.

Essa é uma questão que pode depender até da versão que você está utilizando do NodeJs. No caso aparente, o primeiro erro gerado lança o erro parando a primeira execução, o que acaba não mostrando o resultado da primeira chamada da função.

Mas no segundo, a primeira função executada normalmente, pois esse erro apenas é lançado no fim da execução de todo o código. Isso ocorre pelo tipo de erro gerado.

Espero ter esclarecido sua questão.