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

1

6

I'm trying to use pdfkit v.0.12.1 with AWS CDK and a Lambda function (tried both typescript and js). When I try to run it I get this error:

Error: ENOENT: no such file or directory, open '/var/task/data.trie The Lambda looks like this:

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 runtime is Nodejs_12_x All the code is importd into the Lambda, but I'm unsure if I have everything to run. Lambda file size is about 650kb. Any help appreciated on how to get around this.

Gutierrez answered 23/4, 2021 at 16:55 Comment(0)
G
2

pdfkit was not loaded properly in the lambda function. I solved this by following this advice for adding external dependencies to a lambda function in CDK.

Basically, create a separate folder for your lambda in your CDK set up with a seperate node modules folder. On deploy, all of this will be packed together to have the dependencies available.

After that, pdfkit works as expected.

Gutierrez answered 28/4, 2021 at 17:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.