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

163
Vistas
fs unlink no puede encontrar la ruta requerida

Tengo la siguiente función de eliminación en expressjs, pero cuando intento usar la ruta del elemento que quiero eliminar, aparece como indefinido, pero revisé el tutorial y todavía no veo dónde está el problema:

 router.delete('/messagedelete/:empId', function (req, res) { Message.remove({empId: req.params.empId}, function(err, message) { console.log(message.path); console.log("got inside"); if(err) { return res.send({status: "200", response: "fail"}); } console.log(message.path); fs.unlink(message.path, function() { res.send ({ status: "200", responseType: "string", response: "success" }); }); }); });

Importo fs como este en la parte superior del archivo:

 const fs = require('fs');
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay dos problemas principales:

  1. No estás manejando los errores.
  2. No verifica qué archivo se eliminaría

Cambia esto:

 fs.unlink(message.path, function() { res.send ({ status: "200", responseType: "string", response: "success" }); });

a:

 fs.unlink(message.path, function (err) { if (err) { // handle the error - like res.send with status 500 etc. } res.send ({ status: "200", responseType: "string", response: "success" }); });

No incluyó ninguna información sobre el valor de message.path , pero nunca debe eliminar nada si no está 100% seguro de saber cuál es la ruta y aquí su programa realmente no tiene idea de lo que está tratando de eliminar. podría ser su propio código fuente o algún otro archivo importante en el sistema por lo que sabemos.

Debe usar path.join() para unir algún prefijo de donde desea eliminar los archivos y el message.path que obtuvo, con algo como:

 let filePath = path.join(dir, message.path);

donde dir es un lugar donde guarda los archivos que desea eliminar; si no lo hace, es posible que esté eliminando archivos en todo el sistema de archivos. Pero eso no es suficiente, en realidad debe verificar si el resultado en filePath no está fuera de dir , lo que bien podría estar si el message.path contenía .. por ejemplo. Así que también necesitas por ejemplo:

 if (filePath.indexOf(dir + path.sep) !== 0) { return res.status(403).end('Forbidden'); }

Consulte esta respuesta para obtener más ejemplos y más detalles sobre la validación de rutas que compone con path.join y por qué es importante:

  • Cómo servir una imagen usando nodejs
about 4 years ago · Santiago Trujillo 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