ReferenceError: bytesRead is not defined
发布于 12 年前 作者 luchuan100 4526 次浏览 最后一次编辑是 9 年前

console.log(‘bytesRead’+bytesRead); ^ ReferenceError: bytesRead is not defined

var fs = require('fs');

fs.open(“content.txt”, ‘r’, function(err,fd){ if (err) { console.error(err); return; }

var buf = new Buffer(8);
fs.read(fd, buf, 0, 8, null, function(err,bytesRead,buffer){
	if (err) {
		console.error(err);
		return;
	}
});

console.log('bytesRead'+bytesRead);
console.log(buffer);

});

4 回复

楼主你这几行代码中有3个错误 1、fs.read是异步方法,程序可能先执行最后两个console.log方法,再执行fs.read方法 2、bytesRead是以回调函数的参数形式返回的,所以形参bytesRead无法在console.(‘bytesRead’+bytesRead)中使用,是局部变量 3、同样,buffer也是如此

var fs = require('fs');
fs.open("content.txt", 'r', function (err, fd) {
  if (err) {
    console.error(err);
    return;
  }

  var buf = new Buffer(8);
  fs.read(fd, buf, 0, 8, null, function (err, bytesRead, buffer) {
    // 读取文件内容的回调函数,每读一块数据就执行一次此函数
    // bytesRead 和 buffer 要在此处才能获取到
    if (err) {
      console.error(err);
      return;
    }
    console.log('bytesRead' + bytesRead);
    console.log(buffer);
  });
});

@leizongmin 对哦,他的还有个问题了,fs.read方法只接受fd文件描述符,楼主这几行代码竟然有4个bug哦

@snoopy 木有。他只是下面这两行放错了位置,还有就是发帖是不会排版吧

console.log('bytesRead' + bytesRead);
console.log(buffer);
回到顶部