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

我有这个代码在节点服务器上使用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} ); } ); 

当我检查节点服务器debugging时,错误显示文件的内容,所以我知道该文件正在读取,但为什么不被返回到fileContentsvariables?

因为readFile(filename, encoding, callback)函数不返回文件内容, 所以它将它们作为第二个parameter passing给给定的callback函数。 尝试修改您的代码,如下所示:

 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}); }); });