首页 > 解决方案 > 每 X 秒控制台输出到 html 文件

问题描述

我有这段代码,结果在控制台中打印,我想将它们输出到 .html 文件中:

if (result.items.length > 0 && result.items[0].userName === player) {
      const element = result.items[0];
      const usrName = `<br>NickName: ${element.userName}`;
      const rnk = `<br>Rank: ${element.rank}`;
      const eloo = `<br>Elo: ${element.elo}`;
      const winrt = `<br>Win rate: ${element.winPercent}%`;
      console.log(usrName);
      console.log(rnk);
      console.log(eloo);
      console.log(winrt);
      found = true;

我在终端中使用node file.js > file.html来执行此操作,但我希望它每 x 秒自动发生一次。有什么办法吗?我还想覆盖最后一个输出文件。

标签: node.js

解决方案


你的意思是把它打印到你正在查看的 html 页面上吗?

您可以在运行它的页面上放置一个 div<div id="output"></div>"

进而

setInverval(function() {
  ...
  const usrName = `<br>NickName: ${element.userName}`;
  const rnk = `<br>Rank: ${element.rank}`;
  const eloo = `<br>Elo: ${element.elo}`;
  const winrt = `<br>Win rate: ${element.winPercent}%`;
  document.getElementById('output').innerHTML = usrName + rnk + eloo + winrt;
}, 5000);

但是如果您计划运行输出到文件的节点脚本,那么您必须设置超时,将间隔函数中的最后一行替换为:

require('fs').writeFile(
  __dirname + "/file.html",
  usrName + rnk + eloo + winrt,
  'utf-8',
);

这将每 5 秒删除一次文件

...或者..如果您不想处理在节点中写入文件,我刚刚从https://unix.stackexchange.com/a/10650发现您可以去......

watch -n5 "node file.js > file.html "

它已经安装在我的系统上,但我猜它可能没有安装在你的系统上


推荐阅读