我在与操纵up的节点中遇到范围问题。我无法发送在puppeteer的评估对象中获得的内容,因为我得到了: 错误:评估失败:ReferenceError:未定义res 我需要帮助。
const express = require('express');
const path = require('path'); // NEW
const puppeteer = require('puppeteer');
const fs = require('fs');
const config = require('../src/config.js');
const app = express();
const port = process.env.PORT || 3006;
const DIST_DIR = path.join(__dirname, '../dist'); // NEW
const HTML_FILE = path.join(DIST_DIR, 'index.html'); // NEW
app.use(express.static(DIST_DIR)); // NEW
app.get('/api', (req, res) => {
res.send(mockResponse);
});
app.get('/getapi', async (req, res) => {
req.setTimeout(500000);
var pal= req.query.palabra;
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
const next_class = 'snByac';
const browser = await puppeteer.launch({
headless: false,
});
const page = await browser.newPage();
await page.goto('https://adwords.google.com/ko/KeywordPlanner/Home?', {waitUntil: 'networkidle2'});
await page.waitFor(randomIntFromInterval(10000,25000));
await page.type('input[name=identifier]', config.mail);
await page.click('span.' + next_class);
await page.waitFor(randomIntFromInterval(20000,23000));
await page.type('input[name=password]', config.password)
await page.click('span.' + next_class)
await page.waitFor(randomIntFromInterval(37000,45000));
await page.click('[icon="arrow_forward"]')
await page.waitFor(randomIntFromInterval(3800,6000));
await page.type('[aria-autocomplete="list"]', pal)
await page.waitFor(randomIntFromInterval(1400,2400));
await page.keyboard.press('Enter');
await page.waitFor(randomIntFromInterval(5000,14000));
await page.keyboard.press('Enter');
var hotelJson = {};
await page.evaluate(() => {
var hotelsElms = document.querySelectorAll('.keyword._ngcontent-vyt-82');
hotelsElms.forEach((hotelelement) => {
hotelJson.name = hotelelement.querySelector('span.keyword._ngcontent-vyt-82').innerText;
});
res.json(hotelJson);
});
await browser.close();
});
app.get('/', (req, res) => {
res.sendFile(HTML_FILE); // EDIT
});
app.listen(port, function () {
console.log('App listening on port: ' + port);
});
//app.setTimeout(500000);
我也尝试过放置“ res.json(hotelJson);”在“评估”对象之外,但返回一个空的json,就好像无法在“评估”功能的范围内分配“ hotelJson”,然后将其还原为空,我试图用虚假数据填充它,并且还返回空的。
答案 0 :(得分:1)