Nodemailer - 不是空白文件

时间:2017-03-13 14:17:29

标签: node.js heroku fs nodemailer

我使用node.js创建了一个简单的Web应用程序,并使用heroku托管它。主进程执行许多操作,其中一个操作是使用id读取和写入文本文件。但是,当我尝试将此文件从其他进程发送到带有nodemailer的电子邮件时,它将作为空白发送。该文件最初是空白的,但后来由主进程写入;主要过程也从中读取文本所以我知道问题不在那里。你能告诉我它为什么不起作用吗?

编辑:我确定当我发送文件时不是空的(我用文件内容做console.log)

主要流程代码:

    function handleSubscriptions(event){
var senderID = event.sender.id;
var recipientID = event.recipient.id;
var timeOfPostback = event.timestamp;
var payload = event.postback.payload;

console.log("Received postback for user %d and page %d with payload '%s' " +
    "at %d", senderID, recipientID, payload, timeOfPostback);

if(payload == "iscrizione"){
    fs.appendFile("./users.txt", senderID + ",", function (err) {
        if (err) throw err;
        console.log('The id was appended to file!');
    });

    var data = fs.readFile('./users.txt', function(err, data) {
        if (err) throw err;
        processData(String(data));
    });

    function processData(data){
        var arr = data.split(",");
        for(i = 0; i < arr.length - 1; i++){
            var val = parseInt(arr[i]);
            msg = "user number " + i + " :"+ val ;
            console.log(msg)
        }
    }

    sendMessage(senderID, "Complimenti, sei iscritto!");
}
    }

发件人代码:

    fs.readFile("./users.txt", function (err, data) {

var message = {
    sender: email,
    to: email,
    subject: 'File user',
    body: 'File in allegato',
    attachments: [{'filename': 'users.txt', 'content': data}]
};

transporter.sendMail(message, function(error, info){
    if (error) {
        console.log('Error occurred');
        console.log(error.message);
        return;
    }
    console.log('Message 2 sent successfully!');
    transporter.close();
});
    });

1 个答案:

答案 0 :(得分:0)

这听起来像是并发问题 - 您可能在写入文件之前读取该文件。

您需要确保在写入之前没有读取值。没有看到一行代码,就不可能给你任何更具体的建议。