我尝试在Netlify(我认为是AWS Lambda的包装器)上的函数中使用Puppeteer。该函数可以构建,但是当我访问url时出现以下错误:“错误:未下载Chromium版本。运行“ npm install”或“ yarn install””
我不确定是什么问题,但是如果我使用node index.js
在本地运行该函数,则不会出现问题。
功能:
const puppeteer = require('puppeteer');
let browser;
let page;
exports.handler = async function(event, context, callback) {
await setup();
await snap('http://example.org', 'file.png');
browser.close();
console.log('Done!');
return {
statusCode: 200,
body: 'OK',
};
};
async function setup() {
browser = await puppeteer.launch({headless: true});
page = await browser.newPage();
await page.setViewport({ width: 1024, height: 512 });
}
async function snap(url, file) {
try {
console.log('snapping :', url);
await page.goto(url);
await page.screenshot({ path: file, type: 'png' });
console.log('snapped :', file);
}
catch (err) {
console.log('err :', err);
}
}
答案 0 :(得分:0)
Netlify函数确实由AWS Lambda提供支持,并受AWS Lambda限制。 Deployment package size is limited to 50 MB (zipped)低于Puppeteer的要求。
也就是说,如Puppeteer GitHub troubleshooting page所述,可以使用解决方法。例如,您可以使用以下Chromium二进制文件:https://github.com/alixaxel/chrome-aws-lambda。