CNode

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

Ddidiaoyu发布于13 年前最后回复13 年前3 回复6006 浏览0 收藏

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

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)

H
hhuai#1·13 年前

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!');
});
J
jiyinyiyong#2·13 年前

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

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