Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Tive que fazer o tratamento de erros diferente

O código criado em aula foi esse:

try { fs.lstatSync(caminho); } catch (erro) { if (erro.code === 'ENOENT') { console.log('arquivo ou diretório não existe'); return; } }

Porém ao executá-lo eu recebi um SyntaxError por causa do return que consegui resolver substituindo ele por process.exit(), além disso a condição do if não estava respondendo como esperado e ao testar console.log(erro.code) recebi ERR_INVALID_ARG_TYPE como retorno, então coloquei isso na condição do if e funcionou tudo como esperado, porém não ficou tão claro pra mim o porquê funcionou kkkkk. Se alguém puder me explicar eu agradeço.

A versão do código com essas alterações ficou assim:

try { fs.lstatSync(caminho); } catch (erro) { if(erro.code === "ERR_INVALID_ARG_TYPE"){ console.log("ERRO: Arquivo ou diretório não existe"); process.exit(); } }

1 resposta
solução!

Oi Cleysso!

Primeiramente, sobre o return no bloco catch, ele provavelmente estava causando um erro porque estava sendo utilizado fora de uma função. O return é usado para parar a execução de uma função e retornar um valor dela. Quando usado fora de uma função, ele não tem um contexto de execução válido, causando um SyntaxError. Substituir por process.exit() resolveu o problema porque essa função do Node.js interrompe o processo atual, que é um contexto válido em qualquer parte do seu código.

Agora, sobre o código de erro ERR_INVALID_ARG_TYPE, ele é lançado quando o tipo de um argumento passado para uma função não é o esperado. No seu caso, a função fs.lstatSync() espera um caminho de arquivo ou diretório como argumento. Se o argumento passado não for uma string (ou um objeto com um método toString()), o Node.js lançará esse erro. Então, quando você tentou acessar um caminho que não existia, o Node.js lançou um erro com o código ERR_INVALID_ARG_TYPE.

No código original, o erro ENOENT é verificado, que é o erro lançado quando um arquivo ou diretório não é encontrado. Então, se o seu código estava lançando ERR_INVALID_ARG_TYPE em vez de ENOENT, é provável que o valor de caminho não fosse uma string ou um objeto com um método toString().

Espero ter ajudado e um ótimo Natal!