跳到主要内容
CNode

循环调用fs模块进行写入文件操作报错的问题

社区
Ddidiaoyu发布于 13 年前最后回复 13 年前
360340

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

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)

J
jiyinyiyong#213 年前

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

H
hhuai#113 年前

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

参与回复

登录后即可参与回复。登录