这个错误通常是由于Puppeteer版本不兼容引起的。您可以尝试以下解决方法:
确保您的Puppeteer版本与您的Chromium版本兼容。您可以在Puppeteer的文档中找到兼容的版本列表。
如果您使用的是AWS CDK,请确保您已经正确设置了Chromium Layer。您可以按照下面的步骤进行设置:
首先,在您的AWS CDK项目的根目录中创建一个layers
文件夹。
在layers
文件夹中创建一个新的文件夹,例如puppeteer-layer
。
在puppeteer-layer
文件夹中创建一个package.json
文件,并添加以下内容:
{
"name": "puppeteer-layer",
"version": "1.0.0",
"dependencies": {
"chrome-aws-lambda": "^8.0.0",
"puppeteer-core": "^8.0.0"
}
}
在puppeteer-layer
文件夹中执行以下命令来安装依赖项:
npm install
在puppeteer-layer
文件夹中创建一个index.js
文件,并添加以下内容:
const chromium = require('chrome-aws-lambda');
exports.handler = async (event, context) => {
const executablePath = await chromium.executablePath;
console.log(executablePath);
};
在puppeteer-layer
文件夹中执行以下命令来创建一个ZIP文件:
zip -r puppeteer-layer.zip .
打开您的AWS CDK构建脚本(例如bin/my-stack.ts
)并添加以下代码来创建一个Layer:
import * as lambda from 'aws-cdk-lib/aws-lambda';
const puppeteerLayer = new lambda.LayerVersion(this, 'PuppeteerLayer', {
code: lambda.Code.fromAsset('layers/puppeteer-layer/puppeteer-layer.zip'),
compatibleRuntimes: [lambda.Runtime.NODEJS_14_X],
description: 'Puppeteer Layer',
});
将puppeteerLayer
添加到您的Lambda函数的layers
属性中,如下所示:
const myLambdaFunction = new lambda.Function(this, 'MyLambdaFunction', {
// ...
layers: [puppeteerLayer],
});
构建和部署您的AWS CDK堆栈。
如果上述解决方法仍然无效,您可以尝试更新您的Puppeteer和Chromium版本。您可以使用以下命令更新Puppeteer版本:
npm install puppeteer@latest
并确保您的Chromium版本与Puppeteer版本兼容。
希望这些解决方法能够帮助您解决问题。