【发布时间】:2013-06-07 09:08:55
【问题描述】:
我有一个使用 Winston 日志库的节点应用程序,它在 Winston 文件传输代码中调用 fs.stat 时失败。有问题的代码是(file.js 大约第 515-536 行):
console.log("fullname = " + fullname);
fs.stat(fullname, function (err, stats) {
console.log("CALLBACK");
if (err) {
if (err.code !== 'ENOENT') {
return self.emit('error', err);
}
return createAndFlush(0);
}
if (!stats || (self.maxsize && stats.size >= self.maxsize)) {
//
// If `stats.size` is greater than the `maxsize` for
// this instance then try again
//
return checkFile(self._getFile(true));
}
createAndFlush(stats.size);
});
我已经添加了 console.log 调用。第一个 on 在第一个日志事件时打印,但第二个永远不会到达。
应用程序在 Windows 7 32 位的 Node.js 0.10.10 下运行。它适用于 Linux。 应用程序的 http 服务器继续为事件提供服务,因此主事件循环正常。
以下简短的应用程序对于一个存在的文件和一个不存在的文件正确运行:
fs = require('fs');
fs.stat('c:\\apiserver\\v8.log', function(err, st) {
console.dir(err);
console.dir(st);
});
【问题讨论】: