EROFS:创建节点js函数AWS Lambda时的只读文件系统

时间:2018-03-12 10:44:59

标签: node.js amazon-web-services aws-lambda

我使用Node js版本6.10在AWS lambda上创建了一个函数。 我需要从html字符串创建PDF文件并在电子邮件中发送该文件。 以下是我的代码:

    exports.handler = function index(event, context, callback) {
    var toAddress = event.to;
    var fromAddress = event.from;
    var subject = event.subject;
    var MailBody = event.mailBody;
    var PDFHTML = event.PDFHTML;
    var LabelHTML = event.LabelHtml;

    var options = { format: 'Legal',"header": {
        "height": "25mm",
      }
    }

    pdf.convertHTMLString(LabelHTML, '/tmp/LabelDetails.pdf', function(err, res1) {
        if (err)
        {
            console.log(err);
            callback(err, false);
        }
        else
        {
            pdf.convertHTMLString(PDFHTML, '/tmp/DiagramDetails.pdf', function(err, res1) {
                if (err)
                {
                    console.log(err);
                    callback(null, false);
                }
                else
                {
                    merge(['/tmp/LabelDetails.pdf','/tmp/DiagramDetails.pdf'],'/tmp/Final.pdf',function(err){

                        if(err)
                        {
                            console.log(err);
                            callback(null, false);
                        }
                        else
                        {
                            /*Send mail code */
                            callback(null, true);
                        }
                    });
                }
            });
        }
    });
};

var fs = require("fs");
var pdf = require('html-to-pdf');
var merge = require('easy-pdf-merge');
var nodemailer = require('nodemailer');
var path = require("path");

当我尝试将html字符串转换为PDF文件时,它会抛出错误EROFS:只读文件系统。

我的简单节点js代码完全正常。

在对此问题进行更多研究后,我发现AWS只将写入凭据提供给/ tmp文件夹。所以我应用了像/tmp/FileName.pdf这样的文件路径,但似乎仍然存在问题。

0 个答案:

没有答案