使用尾巴(Node.js模块)读取文件时出现问题

时间:2019-06-26 20:32:27

标签: node.js file minecraft

我正在尝试使用Tail(https://www.npmjs.com/package/tail)将Minecraft服务器日志数据导出到Discord(discord bot部分有效,因此我从这里排除了它)。

如果我在游戏中说了什么,然后检查“ latest.log”,则它已相应更改。但是,使用此脚本,如果我在记事本中打开“ latest.log”,则该漫游器只会看到更改,否则它将无法正常工作。只要在后台打开“ latest.log”,该僵尸程序就可以识别更改,这很烦人,但没什么大不了的。

但是,我的朋友是我为此提供帮助的那个人,对他来说,Tail仅在他打开“ latest.log”时更新。这意味着他将需要继续打开该文件以使Tail能够看到它,而不仅仅是让它在后台运行。

Tail = require('tail').Tail;


var fileToTail = "C:/Users/user/Downloads/logs/latest.log";

tail = new Tail(fileToTail);

tail.on("line", function(data) {
//Working code that sends data
});
tail.on("error", function(error) {
  console.log('ERROR: ', error);
});

是什么导致我们两个之间的差异,我该怎么办,以便漫游器无需用户打开文件就可以看到文件更改?提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是chokidar,您应该注意您是否使用了fs.watch Vs。 fs.watchFile。如果使用 fs.watch,您将无法成功捕捉更改(这可能就是您遇到的情况)。

请参阅以下官方文档中的 chokidar 选项:

<块引用>

usePolling(默认值:false)。是否使用 fs.watchFile(由 轮询)或 fs.watch。如果轮询导致 CPU 使用率过高, 考虑将其设置为 false。通常需要设置这个 为 true 成功通过网络观看文件,它可能是 成功观看其他非标准文件所必需的 情况。在 MacOS 上显式设置为 true 会覆盖 useFsEvents 默认。您还可以设置 CHOKIDAR_USEPOLLING 环境 变量为 true (1) 或 false (0) 以覆盖此选项。