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

Node.js Puppeteer中如何将const变量传入await page.$eval方法?

报错原因

page.$eval 的回调函数会被序列化后传入浏览器上下文执行,你在Node.js环境定义的dourl2属于Node侧变量,浏览器上下文无法直接访问,因此会抛出未定义错误。你使用的'{dourl2}'只是普通字符串,不会自动替换为对应变量值。

解决方法

page.$eval 从第三个参数开始支持传入自定义变量,这些变量会按顺序传递给回调函数的入参,你可以按照如下方式修改代码:

// 1. 获取原有href
const dourl = await page.$eval("#dodaj_do_koszyka"+ link, el => el.href);
// 2. 拼接新链接
const dourl2 = dourl + '000';
// 3. 传入变量赋值href
await page.$eval("#dodaj_do_koszyka" + link, (element, newHref) => {
  element.href = newHref
}, dourl2);

如果需要传递多个变量,按顺序在回调函数后追加参数即可,示例如下:

// 多变量传参示例
await page.$eval(选择器, (element, 参数1, 参数2, 参数3) => {
  // 浏览器侧逻辑
}, 变量1, 变量2, 变量3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:09:03