gpt4 book ai didi

javascript - NodeJS中如何向异步函数传递参数?

转载 作者:行者123 更新时间:2023-12-02 23:45:02 30 4
gpt4 key购买 nike

我正在尝试使用包 puppeteer 从网站截取屏幕截图

为此,我使用 Express 创建了一个简单的服务器:

app.get('/requestScreenShootForDesktop/:id', function(req, res){
(async () => {
const pathUpload = 'uploads/' + Math.floor(Date.now() / 1000) + '.png';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(this.req.params.id);
await page.setViewport({width: 1920, height: 1080});
await page.screenshot({path: pathUpload});

await browser.close();
await res.send({msg: 'ScreenShot Ok'});
})();
});

这段代码的问题在于await page.goto(this.req.params.id);,Node说:

Cannot read property 'params' of undefined

这是因为属于函数 app.get 的变量 req 在异步作用域中不存在。

如何解决这个问题,并将我的变量传递给异步函数?

最佳答案

抛弃生活,不要使用this来访问请求

app.get('/requestScreenShootForDesktop/:id', async function(req, res){
const pathUpload = 'uploads/' + Math.floor(Date.now() / 1000) + '.png';
const browser = await puppeteer.launch();
const page = await browser.newPage();

await page.goto(req.params.id);
await page.setViewport({width: 1920, height: 1080});
await page.screenshot({path: pathUpload});

await browser.close();

res.send({msg: 'ScreenShot Ok'});
});

关于javascript - NodeJS中如何向异步函数传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891253/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com