I am trying to loop the students array and modify the html elements to print a card for each student.
However the code below fails at page.evaluate and gives the following error:
Evaluation failed: ReferenceError: student is not defined
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(`file://${__dirname}/card/card.html`);
console.log(students);
for (const student of students) {
console.log(student.name);
await page.evaluate(() => {
document.getElementById("name").innerHTML = student.name;
document.getElementById("id").innerHTML = student.id;
document.getElementById("text").innerHTML = student.text;
});
await page.screenshot({ path: `example-${student.id}.png` });
}
await browser.close();
})();
page.evaluate() parameter is executed in the browser context, so you need to transfer any variables from Node.js context explicitly as additional arguments and parameters:
await page.evaluate((student) => {
document.getElementById("name").innerHTML = student.name;
document.getElementById("id").innerHTML = student.id;
document.getElementById("text").innerHTML = student.text;
}, student};