循环调用fs模块进行写入文件操作报错的问题
发布于 2年前 作者 didiaoyu 953 次浏览

我做了一个错误日志记录的功能,代码如下:

fs.open(filename, 'a', function(error, fd){
if(!error){
    fs.write(fd, logs);
    fs.close(fd);
    logs = ‘’;
}
});

由于循环写入日志,造成不稳定,执行一段时间之后就会报错如下:

fs.js:75
  throw err;  // Forgot a callback but don't know where? Use NODE_DEBUG=fs
        ^
Error: EBADF, write

请问该怎么处理,或者有其他什么好的方法,谢谢!

3 回复

fs的write和close都是异步的,你要改成回调方式。

或者,fs有个appendfile可以直接用。

fs.appendFile('message.txt', 'data to append', function (err) {
  if (err) throw err;
  console.log('The "data to append" was appended to file!');
});

Node 现在都有 fs.open 了, 真是不习惯啊

嗯,用appendFile可以的!谢谢!

回到顶部