首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html-pdf软件包不适用于aws lambda。

html-pdf软件包不适用于aws lambda。
EN

Stack Overflow用户
提问于 2021-05-31 15:39:38
回答 1查看 1K关注 0票数 1

我已经尝试在我的代码中实现 html-pdf 包,它部署在AWS 上,但是即使在lambda部署了layer for html-pdf包之后,它也会出现错误。下面是我的代码:

代码语言:javascript
复制
import pdf from 'html-pdf';
import AWS from 'aws-sdk';

var S3 = new AWS.S3();
process.env.PATH = `${process.env.PATH}:/opt`;
process.env.FONTCONFIG_PATH = "/opt";
process.env.LD_LIBRARY_PATH = "/opt";

export const convertToPDFandUpload = async (attachmentFile, empCertificate) => {
    let file;
    let params;
    var options = {
        height: "590px",
        width: "800px",
        phantomPath: '/opt/phantomjs_linux-x86_64'
    };

    return new Promise((resolve, reject) => {
        pdf.create(attachmentFile, options).toBuffer(function (err, res) {
            if (err)
                console.log(err);
            file = res;
            params = {
                Bucket: <my_bucket_name>,
                Key: `certificate/${empCertificate.candidateName}${empCertificate.certificateID}.pdf`,
                Body: file,
                ACL: 'public-read'
            };
            S3.upload(params, async function (err, data) {
                if (err) {
                    console.log(err, err.stack);
                    reject(null);
                } else {
                    resolve(data.Location);
                }
            });
        });
    });
};

它在toBuffer()函数之后抛出一个错误。

错误:{ "errorType":"TypeError","errorMessage":“无法读取未定义的属性‘文件名’”,“堆栈”:"TypeError:无法读取未定义的属性‘文件名’“,”at execPdfToBuffer Onboarding/onboarding BE/hronboardingcodebase/services/certification/node_modules/html-pdf/lib/pdf.js:48:1)",““at (/var/task/apis/webpack:/home/nikhilsrivastva/Desktop/HR BE/hronboardingcodebase/services/certification/node_modules/html-pdf/lib/pdf.js:144:1)",/onboarding BE/hronboardingcodebase/services/certification/node_modules/html-pdf/lib/pdf.js:144:1)”,at ChildProcess.emit (events.js:314:20)“、”at ChildProcess.EventEmitter.emit (domain.js:483:12)“、”at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)“}

EN

回答 1

Stack Overflow用户

发布于 2021-06-03 15:24:52

图层压缩文件必须包含一个名为"nodejs“的文件夹,该文件夹必须包含具有您的依赖项的"node_modules”文件夹。在这里查看确切的结构:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path

AWS用于

的Node.js示例文件结构

xray-sdk.zip └ nodejs/node\_modules/aws-xray-sdk

因此,您可以验证您的层压缩文件是否具有正确的结构。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67776735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档