pdfkit on JS/TS Lambda with CDK Error: ENOENT: no such file or directory, open '/var/task/data.trie

pdfkit on JS/TS Lambda with CDK Error: ENOENT: no such file or directory, open '/var/task/data.trie

我正在尝试将 pdfkit v.0.12.1 与 AWS CDK 和 Lambda 函数一起使用(尝试了 typescript 和 js)。 当我尝试 运行 时,出现此错误:

错误:ENOENT:没有那个文件或目录,打开'/var/task/data.trie Lambda 看起来像这样:

const PDFKIT = require("pdfkit")

const pdfPromise = new Promise(resolve => {
        const doc = new PDFKIT()
      
        doc.text('hello pdf Kit...Please work', 100, 50)
        doc.end()
      
        const buffers = []
        doc.on("data", buffers.push.bind(buffers))
        doc.on("end", () => {
          const pdfData = Buffer.concat(buffers)
          resolve(pdfData)
        })
      })

Lambda 运行时间是 Nodejs_12_x 所有代码都导入到 Lambda 中,但我不确定我是否拥有 运行 的所有内容。 Lambda 文件大小约为 650kb。 感谢任何有关如何解决此问题的帮助。

pdfkit 未在 lambda 函数中正确加载。 我通过遵循 this advice 将外部依赖项添加到 CDK 中的 lambda 函数来解决此问题。

基本上,在您的 CDK 中为您的 lambda 创建一个单独的文件夹,并设置一个单独的节点模块文件夹。在部署时,所有这些都将打包在一起以提供可用的依赖项。

之后,pdfkit 将按预期工作。