在Netlify Lambda上运行puppeteer

时间:2019-04-07 19:08:54

标签: aws-lambda puppeteer netlify

我尝试在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);
  }
}

1 个答案:

答案 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