rocketseat-education / bootcamp-gostack-modulos

Repositório contendo todos os códigos feitos nas aulas do Bootcamp GoStack
70 stars 122 forks source link

Faltou uma tratativa de erro no upload de avatar. #5

Closed weslleystos closed 3 years ago

weslleystos commented 3 years ago

Nesse código é feito uma verificação se o arquivo existe para poder excluir, porém não foi feito um teste a priori com o arquvio faltando, e nesse caso vai quebrar por causa do seguinte error:

[Error: ENOENT: no such file or directory, stat '/backend/tmp/abf50a17cfae4cf8bf02a4b585b8845f.png'] { errno: -2, code: 'ENOENT', syscall: 'stat', path: '/backend/tmp/abf50a17cfae4cf8bf02a4b585b8845f.png' }

Nesse caso deveria ter usando um try catch para pegar o error que estava sendo o feito o teste, visto que na documentação avisa que o fs.promises.stat lança uma exceção caso o arquivo não seja encontrado.

 let { avatar } = user;
  if (avatar) {
      try {
          const location = join(multerConfig.directory, avatar.name);
          const hasFile = await fs.promises.stat(location);

          if (hasFile) {
              await fs.promises.unlink(location);
          }
      } catch {
          // arquivo não encontrado
      }
  }
danilo-vieira commented 3 years ago

Faala @weslleystos! Obrigado pelo feedback 💜 Isso é corrigido em aulas posteriores, assim que a lógica de salvar e deletar um arquivo é passada para o StorageProvider.