You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在page.evaluate()中调用函数提示未定义的问题咨询

解决Puppeteer中page.evaluate调用外部函数提示未定义的问题

问题核心是page.evaluate的回调函数运行在浏览器的上下文环境中,和你写代码的Node.js上下文完全是两个独立的环境——你在Node里定义的test函数,浏览器那边根本访问不到,所以会报未定义错误。

下面给几种可行的解决办法:

方法1:在浏览器上下文内定义函数

直接把函数写在page.evaluate的回调里,这样就属于浏览器环境的代码了:

await page.evaluate(() => {
  const test = () => console.log('works');
  test();
});

方法2:把函数作为参数传入evaluate

如果test函数需要复用,可以把它作为参数传给page.evaluate,Puppeteer会自动把可序列化的函数传递到浏览器上下文:

const test = () => console.log('works');
// 方式一:通过参数接收并调用
await page.evaluate((func) => {
  func();
}, test);

// 方式二:更简洁的直接传递
await page.evaluate(test);

⚠️ 注意:如果你的函数依赖Node.js环境里的变量或模块(比如require、fs这些),这种方法行不通,因为浏览器上下文没有这些东西,只能传递纯前端可执行的函数。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:05:12