2012-03-06 67 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

相关问题