En el desarrollo de aplicaciones web con Laravel, a menudo es necesario generar PDFs o realizar capturas de pantalla de páginas web. Browsershot y Puppeteer son dos herramientas populares que facilitan estas tareas. Si estás utilizando Laravel Sail con Docker, este tutorial te mostrará cómo instalar Browsershot y Puppeteer 17 en tu entorno de desarrollo. También abordaremos cómo resolver un error común. ¡Vamos a empezar!

El error que ocurre actualmente con las nuevas versiones de Puppeteer es el siguiente:

chmod: cannot access '/usr/lib/node_modules/puppeteer/.local-chromium': No such file or directory

Paso 1: Publicar los archivos de Laravel Sail

El primer paso es publicar los archivos de configuración de Laravel Sail. Esto te permitirá personalizar la configuración de Docker para incluir las dependencias necesarias. Ejecuta el siguiente comando en la raíz de tu proyecto:

sail artisan sail:publish

Paso 2: Agregar Dependencias de puppeteer

Luego, necesitas agregar algunas dependencias a los contenedores Docker de Laravel Sail. Para ello, edita el archivo Dockerfile, que generalmente se encuentra en el directorio .docker de tu proyecto.

Busca la siguiente linea: && apt-get install -y nodejs \ y sustituyelas con estas líneas en el archivo Dockerfile:

&& apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev libxshmfence-dev \

Quedando de la siguiente forma:

dependencias de puppeteer

Paso 3: Reconstruir Contenedores Docker

Después de modificar el Dockerfile, necesitas reconstruir los contenedores Docker para aplicar los cambios. Utiliza el siguiente comando:

sail build --no-cache

Luego, inicia los contenedores actualizados:

sail up -d

Paso 4: Acceder al Shell de Sail

Ahora que los contenedores Sail están en funcionamiento con las nuevas dependencias, puedes acceder al shell de Sail para continuar con la instalación de Browsershot y Puppeteer 17. Ejecuta el siguiente comando:

sail root-shell

Paso 5: Instalar Puppeteer 17

Dentro del shell de Sail, puedes instalar Browsershot y Puppeteer 17 utilizando npm. Ejecuta el siguiente comando:

npm install --location=global --unsafe-perm puppeteer@^17

Paso 6: Dar los permisos adecuados

Es posible que encuentres un error que dice: «chmod: cannot access ‘/usr/lib/node_modules/puppeteer/.local-chromium’: No such file or directory». Para solucionarlo, ejecuta el siguiente comando:

chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium

¡Listo!

¡Hemos completado con éxito la instalación de Browsershot y Puppeteer 17 en tu entorno Laravel Sail! Ahora puedes aprovechar estas herramientas para generar PDFs y capturas de pantalla en tu aplicación Laravel de manera eficaz. Si te encuentras con algún problema o tienes preguntas, no dudes en buscar ayuda en la comunidad de Laravel o consultar la documentación oficial de Browsershot y Puppeteer.

te comparto unos ejemplos del antes y el despues.

error de puppeteer
ejemplo de pdf con browsershot

Si quieres saber como instalar docker en linux da clic aqui.

Categorías: dockerlaravel

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *