为什么Node中的readFile操作会抛出错误?

时间:2012-03-06 04:37:47

标签: node.js

我在Node服务器上使用socket.io有这段代码:

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变量?

1 个答案:

答案 0 :(得分: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});
  });
});