Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Puppeter中不使用async/await获取窗口的全局变量_Javascript_Node.js_Puppeteer - Fatal编程技术网

Javascript 如何在Puppeter中不使用async/await获取窗口的全局变量

Javascript 如何在Puppeter中不使用async/await获取窗口的全局变量,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我正在节点js版本6中研究木偶演员。因为NodeJSVersion6不支持async/await,所以我需要一种在evaluate函数中获取全局变量的方法 我尝试了以下方法,但没有成功 let _browser; let _page; puppeteer .launch() .then(browser => (_browser = browser)) .then(browser => (_page = browser.newPage())) .then(page =&

我正在节点js版本6中研究木偶演员。因为NodeJSVersion6不支持async/await,所以我需要一种在evaluate函数中获取全局变量的方法

我尝试了以下方法,但没有成功

let _browser;
let _page;
puppeteer
  .launch()
  .then(browser => (_browser = browser))
  .then(browser => (_page = browser.newPage()))
  .then(page => page.goto('https://mywebsite.com')) // not actual page
  .then(() => _page)
  .then((page) => page.evaluate(()=>{
        console.log("sdasd");// no output here
        console.log(globalvar); // its the global variable
        console.log("aaaaa"); // no output here
        return Promise.resolve("a")
    })
  )
  .then(() => _browser.close());
当我试图拍摄截图时,它起作用了

puppeteer
 .launch()
 .then(browser => (_browser = browser))
 .then(browser => (_page = browser.newPage()))
 .then(page => page.goto('https://example.com'))
 .then(() => _page)
 .then(page => page.screenshot({ path: 'example.png' }))
 .then(() => _browser.close());

执行
evaluate
方法时,它实际上是在页面上下文中执行的,即在远程浏览器中执行。这就是为什么您看不到来自
控制台.log
语句的任何输出:它们实际上是在浏览器中执行的,而不是在终端/命令行窗口中执行并输出

对于您希望做的事情,您应该能够做到以下几点:

.then((page) => {
  return page.evaluate(() => {
    return globalVar;
  });
})
.then((globalVarHere) => {
  console.log(globalVarHere); // Should output the value
});
.then(page=>page.evaluate('globalVar'))。然后(console.log)
对于那些认为此处的页面上下文令人困惑的人,您可能希望将全局变量作为名称
string
传递,以明确它不在当前上下文中。