首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将推力传递给木偶师的$.eval

将推力传递给木偶师的$.eval
EN

Stack Overflow用户
提问于 2018-06-02 22:18:33
回答 1查看 3K关注 0票数 5

函数setValue接收一个值并返回一个函数。在第二个函数中,我试图通过控制台记录value的值,但我得到

代码语言:javascript
复制
Error: Evaluation failed: ReferenceError: value is not defined

我的代码如下。它可以在try-puppeteer上测试,只需复制并粘贴我的代码并删除require语句。

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
  const USERNAME = 'helloworld';
  const setValue = (value) => (input) => { console.log(value) };

  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('http://example.com');
  await page.$eval('.selector', setValue(USERNAME));

  await browser.close();
})();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 01:07:27

这是在Node.js中执行并在浏览器(量角器、TestCafe、噩梦等)中评估代码的任何库的常见问题。函数被字符串化并作为字符串传递给浏览器。(input) => { console.log(value) }原有作用域丢失,预计value为全局,未定义。

正如the documentation提到的,应该将额外的参数传递给$eval

它应该是:

代码语言:javascript
复制
await page.$eval('.selector', (el, value) => { console.log(value) }, USERNAME);

console.log可以工作,但显然不会在节点控制台中显示任何内容,因为它指的是浏览器控制台。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50657830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档