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

204
Vistas
Titiritero obtiene el error 503 cuando se implementa pero no localmente

Estoy usando titiritero en Node para tomar una captura de pantalla de un dominio, pero tengo algunos problemas inconsistentes.

Las cosas funcionan bien cuando ejecuto el código localmente, pero cuando lo tengo implementado en Heroku obtendré un 503 (servicio no disponible) 8/10 veces cuando pruebo las cosas. No estoy seguro de por qué funcionará esas 2/10 veces.

Tengo los complementos en Heroku y he intentado restablecerlos para asegurarme de que se carguen en el orden correcto, como han mencionado algunas soluciones. También intenté cambiar la configuración dentro de la función titiritero, como las que se muestran aquí y tener 'sin cabeza: verdadero'

Estoy enviando la imagen como una cadena base64 para luego mostrarla en la interfaz.

Aquí está mi código de función, ruta api y solicitud de interfaz:

Código de función:

 async function captureScreenshot(domain) { try { const browser = await puppeteer.launch({ args: [ "--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage", ], }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 1080 }); await page.goto(`http://${domain}`); let domainScreenshot = await page.screenshot({ type: "jpeg", quality: 75, }); domainScreenshot = Buffer.from(domainScreenshot).toString("base64"); await browser.close(); return domainScreenshot; } catch (err) { console.log(`❌ Error: ${err.message}`); } }

Ruta API:

 router.get("/screenshot", async (req, res, next) => { try { const { domain } = req.query; const buffer = await captureScreenshot(domain); res.setHeader("Content-Type", "image/png"); res.send(buffer); } catch (error) { next(error); } });

Solicitud de reducción:

 export const fetchScreenshot = (domain) => async (dispatch) => { try { const params = { domain, }; const { data: imgUrl } = await axios.get("/api/domainData/screenshot", { params, }); if (imgUrl) { dispatch(setImgURL(domain, imgUrl)); } } catch (error) { console.error(error); } };

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Encontré una solución:

Agregué esta línea a la matriz de argumentos del titiritero:

 "--single-process"

Todavía tiene errores, pero es más como 1/10 veces, lo que es mucho más aceptable.

over 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