Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

103
Vistas
Cómo devolver la promesa de fs.unlink

Quiero eliminar un archivo y esperar a que la eliminación se realice correctamente antes de continuar. He usado la función de desvinculación dentro de una promesa para obtener el resultado, pero cuando la desvinculación se realiza con éxito, obtengo el resultado de la promesa si hay algún error al eliminar el archivo, la promesa no devuelve ningún error.

Servicio:

 public removeUserImage( user: User, ): Promise<NodeJS.ErrnoException | boolean> { const pathToRemoveImage = 'src/public/uploads'+ '/' + user.image_url; return new Promise((resolve, reject) => { unlink(pathToRemoveImage, (error) => { if (error) reject(error); resolve(true); }); }); }

Controlador:

 const isFileRemoved = await this._userService.removeUserImage(user); //This block not excuting if (!isFileRemoved) { throw new InternalServerErrorException( 'Error occurred while trying to remove file.', ); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su promesa se rechaza si hay un error. Al usar await , debe envolver el código en try..catch para manejar cualquier falla

 try { await this._userService.removeUserImage(user); } catch (err) { console.error(err); throw new InternalServerErrorException( 'Error occurred while trying to remove file.' ); }

FYI, puede (y debe) usar las versiones de API de Promises de las funciones fs

 import { unlink } from "node:fs/promises"; public removeUserImage({ image_url }: User): Promise<void> { const pathToRemoveImage = `src/public/uploads/${image_url}`; return unlink(pathToRemoveImage); }

Si quisiera que su método siempre se resolviera con un booleano, querría algo como

 return unlink(pathToRemoveImage) .then(() => true) // resolve with "true" for success .catch((err) => { console.error("removeUserImage", image_url, err); return false; // resolve with "false" for failure });
about 4 years ago · Juan Pablo Isaza Denunciar

0

El error siempre irá al bloque catch,

 try { await this._userService.removeUserImage(user); } catch (err) { console.error(err); throw new InternalServerErrorException( 'Error occurred while trying to remove file.' ); }

Sugerencia: no necesita convertir unlink (devolución de llamada) para prometer que fs también tiene una función de promesa, verifique esto

 const fs = require('fs'); const fsPromises = fs.promises; public removeUserImage( user: User, ): Promise<void> { const pathToRemoveImage = 'src/public/uploads'+ '/' + user.image_url; return fsPromises.unlink(pathToRemoveImage); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda