2012-03-06 62 views
1

我有使用socket.io節點服務器上運行此代碼:爲什麼Node中的這個readFile操作會拋出一個錯誤?

io.sockets.on(
    'connection' 
    ,function (socket) { 
    reader = require('fs'); 
    fileContents = reader.readFile(__dirname + '/textCharacters.txt' 
            ,'utf8' 
            ,function(data, err) { 
               if (err) throw err; 
               console.log(data); 
            } 
          ); 
    socket.emit('retrievedFileContent', {content:fileContents}); 
    } 
); 

當我檢查了節點服務器調試,錯誤顯示文件的內容,所以我知道該文件被讀出,但爲什麼是不是它被返回到fileContents變量?

回答

3

因爲readFile(filename, encoding, callback) function回報文件內容,它通過他們作爲第二個參數給定的回調函數。嘗試修改您的代碼,如下所示:

var fs = require('fs'); 

io.sockets.on('connection', function (socket) { 
    var filename = __dirname + '/textCharacters.txt'; 
    fs.readFile(filename, 'utf8', function(err, data) { 
    if (err) throw err; 
    socket.emit('retrievedFileContent', {content:data}); 
    }); 
}); 
+0

謝謝,就是這樣! – ariestav 2012-03-06 14:36:44

相關問題