Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeEmailer-非空文件作为空文件发送_Node.js_Heroku_Fs_Nodemailer - Fatal编程技术网

Node.js NodeEmailer-非空文件作为空文件发送

Node.js NodeEmailer-非空文件作为空文件发送,node.js,heroku,fs,nodemailer,Node.js,Heroku,Fs,Nodemailer,我用node.js制作了一个简单的web应用程序,并用heroku托管了它。主进程执行许多操作,其中之一是读取和写入带有ID的文本文件。但是,当我尝试将此文件从另一个进程发送到使用nodemailer的电子邮件时,它将作为空白发送。文件最初为空,但随后由主进程写入;主程序也从中读取文本,因此我知道问题不在那里。你能告诉我为什么它不工作吗 编辑:我确信当我发送文件时文件不是空的(我使用文件的内容创建console.log) 主要工艺代码: function handleSubscripti

我用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!");
}
    }

这听起来像是并发性的问题——您可能在写入文件之前读取了该文件


您需要确保在写入值之前没有读取这些值。如果看不到一行代码,就不可能给出比这更具体的建议。

我用代码更新了问题。正如我所写的,我知道文件不是空的,因为我使用console.log输出内容
    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();
});
    });