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

SST应用部署Puppeteer Lambda函数遇目录不存在错误

解决SST部署Puppeteer Lambda函数时的目录不存在错误

错误原因

部署时出现的Error: The input directory "/var/task/packages/functions/bin" does not exist,本质是SST打包Lambda函数时未找到预期的二进制文件目录,结合你使用的@sparticuz/chromium依赖,大概率是打包配置未正确包含该依赖的二进制文件,或是冗余依赖导致冲突。

解决步骤

1. 清理冗余依赖

你同时安装了同类依赖chrome-aws-lambda和@sparticuz/chromium,以及完整包puppeteer(你实际用的是puppeteer-core),这些冗余依赖会干扰打包过程:

npm uninstall chrome-aws-lambda puppeteer

2. 配置SST打包规则

在sst.config.ts的Lambda函数配置中,添加copyFiles规则,确保@sparticuz/chromium的二进制文件被复制到指定目录:

export default {
  config(_input) {
    return {
      name: "your-project-name",
      region: "us-east-1",
    };
  },
  stacks(app) {
    app.stack(function MyStack({ stack }) {
      new Function(stack, "PuppeteerFunction", {
        handler: "packages/functions/src/handler.handler",
        bundle: {
          copyFiles: [
            {
              from: "node_modules/@sparticuz/chromium/bin",
              to: "bin",
            },
          ],
        },
        // Puppeteer需要足够资源,按需配置内存和超时
        memorySize: 2048,
        timeout: 30,
      });
    });
  },
};

3. 重新安装依赖并部署

清理缓存后重新安装依赖,再执行部署:

rm -rf node_modules package-lock.json
npm install
npx sst deploy

4. 验证handler路径

确认Lambda函数的handler配置路径与实际文件路径一致,比如你的handler文件在packages/functions/src/handler.ts,则配置中的handler应为packages/functions/src/handler.handler,避免因路径错误导致打包异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:02:06