我在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
变量?
答案 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});
});
});