即使我能在控制台中清楚地看到我的输出。我无法将它们写入文件。有1个输出文件及其undefined-03-02-2017.txt,其中包含单行'15:33 undefined'。
for (i = 0; i < channelcount; i++) {
messages[i] -= messagesOld[i];
console.log(channels[i] + ' ' + messages[i]);
messages[i] = messagesOld[i];
fs.open('logs/' + channels[i] + '.txt', 'r', function (err, fd) {
if (err && err.code == 'ENOENT') {
fs.writeFile('logs/' + channels[i] + '-' + moment().format('MM-DD-YYYY') + '.txt', moment().format('H:mm') + ' ' + messages[i], function (err) { });
} else {
fs.appendFile('logs/' + channels[i] + '-' + moment().format('MM-DD-YYYY') + '.txt', moment().format('H:mm') + ' ' + messages[i] + '\n', function () { });
}
});
}
答案 0 :(得分:0)
@Pyro,你错误地使用了writeFile。请参阅语法 writeFile(文件,数据[,选项],回调)
你必须像这样使用
fs.writeFile('logs /'+ channels [i] +' - '+ moment()。format('MM-DD-YYYY')+ moment()。format('H:mm')+' .txt',messages [i],function(err){});
答案 1 :(得分:0)
NULL
是一个异步函数。所以你的整个循环将在第一个回调被实际调用之前运行。到那时我等于channelCOount + 1并且channel [channelCount + 1]未定义。
您可以将回调包装到闭包中,如果可以使用ES6则使用fs.open()
,或使用let