[Symfony x Puppeteer] Timeout sur l'appel d'un script NodeJS via la fonction exec() dans mon controlleur.
Bonjour à tous,
J'essaye en vain de transformer une page HTML complexe (graphique chart.js avec des données provenant d'un call API) en PDF en utilisant Puppeteer.
J'ai exactement le même problème que le thread ci-joint (Stackoverflow).
Puppeteer est basé sur Chrome, le script JS navigue jusqu'à la page désiré et la transforme en PDF.
Lorsque j'exécute la commande suivante dans mon terminal, le PDF est généré parfaitement, les graphiques apparaissent, bref tout est ok.
Code:
node public/js/htmlToPdf.js cookieName cookieValue
Mon script JS:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
// Je met en place le cookie avec les données venant du server
const cookie = {
name: process.argv[2],
value: process.argv[3],
domain: 'localhost',
url: 'http://localhost:8888/',
path: '/',
expires: -1,
httpOnly: true,
secure: false,
session: true
};
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCookie(cookie);
await page.setRequestInterception(true);
page.on("request", request => {
console.log(request.url());
request.continue();
});
await page.goto('http://localhost:8888/log/project/1', {waitUntil: 'networkidle0'});
await page.pdf({
path: '/Users/Web_dev/PERSONAL_PROJECT/tfe-devlop-eat/public/pdf/test.pdf',
format: 'A4'
});
await browser.close();
})(); |
Lorsque j'exécute mon script via la fonction exec() de PHP via la route de mon controlleur, j'ai un message d'erreur avec le timeout.
Mon controlleur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
/**
* @Route("/log/pupet", name="project_pupet")
*/
public function pupetPdf(Request $request)
{
$name = session_name();
$value = $request->cookies->get($name);
// Appel de la commande avec en paramètre les valeurs du cookie
exec('/usr/local/bin/node ' . __DIR__ . '/../../public/js/htmlToPdf.js ' . $name . ' ' . $value, $output, $return_var);
} |
L'erreur:
Code:
(node:11982) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
Ma config :
Je suis très intéressé d'avoir un retour d'expérience si vous avez déjà utilisé Puppeteer dans un projet PHP.
D'avance merci ;)