You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda+Puppeteer报错:无法找到/var/task/puppeteer/lib/Browser模块

问题原因及解决方法

核心原因:版本不兼容

你使用的chrome-aws-lambda@10.1.0与puppeteer-core@21.7.0版本差距过大,二者完全不兼容。chrome-aws-lambda的版本需要与puppeteer-core严格对应:chrome-aws-lambda@10.x仅支持puppeteer-core@10.x系列,高版本的puppeteer-core内部模块路径结构已变更,导致chrome-aws-lambda错误地尝试从/var/task目录查找模块(实际该模块在层的/opt/nodejs/node_modules/puppeteer-core/lib下)。

解决步骤

1. 匹配依赖版本

修改层的package.json,将puppeteer-core降级到与chrome-aws-lambda@10.1.0兼容的版本,推荐使用puppeteer-core@10.4.0(与chrome-aws-lambda@10.1.0完全适配):

{
  "dependencies": {
    "chrome-aws-lambda": "10.1.0",
    "puppeteer-core": "10.4.0"
  }
}

重新安装依赖并构建层:

cd src/layers/chromium/nodejs
npm install

2. 确认Lambda层结构与打包方式

确保你的层目录结构正确,src/layers/chromium下直接包含nodejs文件夹:

src/layers/chromium/
└── nodejs/
    └── node_modules/
        ├── chrome-aws-lambda/
        └── puppeteer-core/

使用CDK的Code.fromAsset时,指定的路径是../../src/layers/chromium,这会正确打包nodejs目录到层中。避免将chromium文件夹本身作为层根(否则Lambda无法识别nodejs目录)。

3. 强制CDK排除函数包中的冲突依赖

在NodejsFunction配置中添加externalModules,确保CDK不会将chrome-aws-lambda和puppeteer-core打包进函数部署包,强制使用层中的版本:

this.createDownloadPDF = new NodejsFunction(this, "createDownloadPDF", {
  runtime: Runtime.NODEJS_20_X,
  // 其他配置...
  layers: [this.chromiumLayer],
  externalModules: ['chrome-aws-lambda', 'puppeteer-core'],
});

4. 验证Lambda环境变量(可选)

如果上述步骤仍未解决问题,手动设置Lambda的NODE_PATH环境变量,确保Node.js能同时加载函数包和层中的模块:

NODE_PATH=/var/task/node_modules:/opt/nodejs/node_modules

额外排查点

  • 检查Lambda控制台中函数的Layers标签,确认chromiumLayer已正确附加,且版本为最新构建版本。
  • 下载层的部署包,解压后确认nodejs/node_modules下存在完整的chrome-aws-lambda和puppeteer-core目录。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:55:34