Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

425
Visualizações
Cómo detectar un error al usar S3.getsignedurlpromise() en node.js

Tengo un servidor node.js que descarga imágenes de mi depósito s3 y entrega las imágenes a mi cliente React. Quiero administrar el caso cuando se envía la clave de archivo incorrecta al cliente S3. Para hacerlo, estoy enviando intencionalmente una clave incorrecta desde React. Espero recibir un error que pueda detectar y representar mi vista en consecuencia. Desafortunadamente, la API s3 no devuelve un error, por lo que todos los puntos de mi código en los que tengo la intención de detectar el error se están pasando y no puedo mostrar una vista cuando obtengo la imagen y otra vista cuando recibo un error.

Mi código se ve así:

 //s3Connect.js download: async (fileKey)=>{ const downloadParams={ Key:fileKey, //this is a wrong key like 123 or anything Bucket:bucketName } const data = s3.getSignedUrlPromise('getObject', downloadParams); return data }
 //adminPanel.js //I call the above function below getBackgroundCheck:async (req,res)=>{ const readStream = await s3.download(req.params.key).then(url=> { console.log(url) res.send({url}) }) .catch(error=>{ console.log(error) res.send('the error is',error) //since I sent a wrong key I expect to catch an error here } ) }

Ahora en el lado del cliente. Uso React y el método fetch para recuperar la imagen.

 const getBackgroundFile = async (e) => { try { e.preventDefault() const response = await fetch(`http://localhost:3003/adminPanel/getbackgroundcheck/${id}`) console.log('this is the response ',response) const parseResponse = await response.json() console.log('this is the parseResponse', parseResponse) setImage(parseResponse) setShowBackImage(true) } catch (error) { console.log('this is the error',error) //again I expect to see this in console } }

Finalmente: ¿Qué obtengo con console.logs de la función anterior?

 this is the response Response {type: 'cors', url: 'http://localhost:3003/adminPanel/getbackgroundcheck/nll%C3%B1', redirected: false, status: 200, ok: true, …}

Entonces, como puede ver, tengo un estado de 200. Entonces, ¿cómo puedo manejar un error si obtengo un estado 200 ok cuando sé que la respuesta falló porque mi servidor no pudo encontrar la imagen en el depósito s3 y entregársela a mi cliente?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La creación de una URL prefirmada es una operación que no puede fallar en el funcionamiento normal. No hay una llamada de API real detrás de la creación de una URL prefirmada: es un simple ejercicio de firma local en el SDK. Felizmente generará URL prefirmadas para objetos que no existen, por ejemplo.

Si no desea detectar URL de venta para objetos S3 inexistentes, tendrá que hacerlo de otra manera. Por ejemplo, enviando las descargas por proxy o empujando la responsabilidad al cliente.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda