2013-03-20 105 views
0

我正在使用以下代碼寫入公共文件。在node.js中多次同時訪問文件寫入會導致文件寫入錯誤

fs.appendFile('log.txt', str, function (err) { 
    console.log("error writing file"); 
    }); 

它從多個函數調用同時被調用。它正確完成了文件寫入操作,但仍然出現錯誤「寫入文件錯誤」。

什麼是乾淨的方式來編寫/執行此代碼。我要每個調用等待I/O操作,直到已經寫完功能完成。

+1

爲什麼不具有處理所有寫入的單個日誌功能? – generalhenry 2013-03-20 17:35:08

+0

我想要將所有數據寫入相同的文件。我如何處理它? – Gaurav 2013-03-20 17:40:58

+0

嘿,修好了。我使用了appenFileSync函數。不管怎麼說,多謝拉!!!! – Gaurav 2013-03-20 17:44:39

回答

3

下面是一個記錄模塊的基本示例。

var fs = require('fs'); 

var logStream = fs.createWriteStream('log.txt', {flags:'a'}); 

function log (str) { 
    logStream.write(str); 
} 

module.exports = log; 
8

其實你缺少一個if - 你應該檢查是否設置了err。

fs.appendFile('log.txt', str, function (err) { 
    if (err) console.log("error writing file"); 
    }); 

否則它會簡單地輸出您的消息,因爲在每次追加後調用回調。