Node.js 为什么节点中的此readFile操作会引发错误?

Node.js 为什么节点中的此readFile操作会引发错误?,node.js,Node.js,我在节点服务器上使用socket.io获得以下代码: io.sockets.on( 'connection' ,function (socket) { reader = require('fs'); fileContents = reader.readFile(__dirname + '/textCharacters.txt' ,'utf8'

我在节点服务器上使用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
变量?

因为没有返回文件内容,它将其作为第二个参数传递给给定的回调函数。尝试修改代码,如下所示:

var fs=require('fs');
io.sockets.on('connection',函数(socket){
var filename=_dirname+'/textCharacters.txt';
fs.readFile(文件名'utf8',函数(错误,数据){
如果(错误)抛出错误;
emit('retrievedFileContent',{content:data});
});
});