Нет, вы не можете передавать такие функции.Переданные данные должны быть сериализованы через JSON.stringify
, что невозможно для функций.
Альтернатива: выставить функцию
Для использованияфункция из вашей среды Node.js внутри страницы, вам нужно выставить ее через page.exposeFunction
.При вызове функция выполняется в вашей среде Node.js
await page.exposeFunction('myfunction', text => `great ${text}`);
await page.evaluate(async (object) => {
return await window.myfunction(object); // 'great example'
}, 'example');
Альтернатива: Определите функцию внутри page.evaluate
Чтобы использовать функцию в контексте страницыВы можете определить его внутри контекста.Таким образом, функция не имеет доступа к вашим переменным Node.js.
await page.evaluate((obj) => {
const myfunction = (stuff) => `great ${stuff}`;
return myfunction(obj); // 'great example'
}, 'example');