无法读取未定义的 属性 'filename' 将 html-pdf 与 lambda 结合使用

Cannot read property 'filename' of undefined Using html-pdf with lambda

我在尝试使用 Lambda 函数从 HTML 创建 PDF 时遇到问题,我收到以下错误:

{
    "errorType": "TypeError",
    "errorMessage": "Cannot read property 'filename' of undefined",
    "trace": [
        "TypeError: Cannot read property 'filename' of undefined",
        "    at execPdfToBuffer (/var/task/node_modules/html-pdf/lib/pdf.js:48:21)",
        "    at ChildProcess.respond (/var/task/node_modules/html-pdf/lib/pdf.js:144:5)",
        "    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)"
    ]
}

我的代码是:

try{
    
    let arq = await new Promise((res,rej)=>{
      pdf.create(html,{
        format: "Letter",
        orientation: "portrait",
        phantomPath: '/opt/phantomjs_linux-x86_64'
      }).toBuffer(function(err, buffer){
        if (err){
          rej(false);
        }else{
          res(buffer);
        } 
      });
    });

    const params = {
      Key: 'teste.pdf',
      Body: arq, // <---------
      Bucket: 'temp'
    };
    
    let S3 = new AWS.S3();
    let response = await S3.upload(params).promise();
    
    if (response){
      return true;
    }else{
      return false;
    }

  }catch(err){
    console.log(err);
    return false;
  }

我读过这个主题:html-pdf package is not working on aws lambda 但是建议的解决方案对我不起作用。

提前致谢

我也运行关注这个问题。我通过将 html-pdf 从版本 3.0.1 降级到版本 2.2.0.

来修复它

较新版本的 release notes 不那么鼓舞人心:“不确定这个模块是否可以在不手动安装 phantomjs 的情况下使用”

也许有办法让版本 3 与 lambda 一起工作。但降级对我来说是一个快速的胜利。

在版本 3.0.1 中,您可以设置标志 localUrlAccess: true, ,它将起作用