如何解决带有 CDK 的 JS/TS Lambda 上的 pdfkit 错误:ENOENT:没有这样的文件或目录,打开“/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 按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。