Interessante, ao executar o código de forma seguida, recebo diferentes outputs da execução. As vezes recebo a resposta esperada recebida no vídeo, as vezes recebo apenas a mensagem de erro, sem a leitura do arquivo. Alguém saberia dizer a que se deve esta diferença de resposta?
Código usado:
import fs from 'fs';
import chalk from 'chalk';
function trataErro(erro) {
console.log(erro);
throw new Error(chalk.red(erro.code, 'erro ao ler arquivo'))
}
// Async/await
async function pegaArquivo(caminhoDoArquivo) {
try {
const encoding = 'utf-8';
const texto = await fs.promises.readFile(caminhoDoArquivo, encoding);
console.log(chalk.green(texto));
} catch (erro) {
trataErro(erro);
}
}
pegaArquivo('./arquivos/texto.md');
pegaArquivo('./arquivos/');
Recebendo apenas o erro:
PS C:\Cursos\Alura\2708-node-lib-md> node index.js
[Error: EISDIR: illegal operation on a directory, read] {
errno: -4068,
code: 'EISDIR',
syscall: 'read'
}
file:///C:/Cursos/Alura/2708-node-lib-md/index.js:6
throw new Error(chalk.red(erro.code, 'erro ao ler arquivo'))
^
Error: EISDIR erro ao ler arquivo
at trataErro (file:///C:/Cursos/Alura/2708-node-lib-md/index.js:6:11)
at pegaArquivo (file:///C:/Cursos/Alura/2708-node-lib-md/index.js:17:9)
Node.js v18.9.0
Inclusive se eu utilizar:
// Pegando um arquivo inexistente em vez de um diretório
pegaArquivo('./arquivos/teste');
Sempre recebo apenas a mensagem de erro, não recebo a promessa fulfilled.