nodejs: Evaluation failed: ReferenceError: variable is not defined

nodejs: Evaluation failed: ReferenceError: variable is not defined

Whosebug 上也有类似的问题,但 none 帮助我解决了这个问题。我的代码有什么问题?为什么它以 UnhandledPromiseRejectionWarning: Error: Evaluation failed: ReferenceError: target_time is not defined 退出。我应该在哪里声明变量,使其成为全局变量?

这是代码

const puppeteer = require('puppeteer');

// const target_time = 1640955540;

async function getexample(){
  const target_time = 1640955540;
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  const url = "https://example.com";
  await page.goto(url);
  await page.waitForSelector("h1");

  const date_change = await page.$eval("h1", e =>
       e.innerHTML = target_time   // This is where the exception occurs
   );
  console.log(date_change);
  console.log(target_time)
  await browser.close();
};

getexample();

找到答案。我必须将我的变量传递给 $eval 函数。最后我的代码变成了。

const puppeteer = require('puppeteer');

// const target_time = 1640955540;

async function getexample(){
  const target_time = 1640955540;
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  const url = "https://example.com";
  await page.goto(url);
  await page.waitForSelector("h1");

  await page.$eval("h1", (e,t) =>
       e.innerHTML = target_time   // This is where the exception used to occur
   ,target_time); // I had to remove the return `date_change` because it returned undefined.
  //console.log(date_change);
  console.log(target_time)
  await browser.close();
};

getexample();