Node.js如何每隔X秒自动将控制台输出写入并覆盖HTML文件
实现方案
方案1:修改原JS脚本内置定时逻辑(推荐)
无需依赖额外工具,直接在Node.js脚本中加入定时和写文件逻辑,默认写入会覆盖旧文件:
// 引入Node内置文件操作模块,无需额外安装 const fs = require('fs'); // 你要设置的定时间隔,单位为毫秒,示例为30秒执行一次 const INTERVAL = 30 * 1000; // 把你原有的业务逻辑封装为可重复执行的函数 function fetchAndWriteHtml() { let found = false; // 这里放你原有的获取result的逻辑(比如接口请求、数据查询等,要保证每次执行拿到最新的result) if (result.items.length > 0 && result.items[0].userName === player) { const element = result.items[0]; // 拼接所有HTML内容,可自行补充完整HTML规范标签避免乱码 let htmlContent = `<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><title>玩家数据</title></head> <body>`; htmlContent += `<br>NickName: ${element.userName}`; htmlContent += `<br>Rank: ${element.rank}`; htmlContent += `<br>Elo: ${element.elo}`; htmlContent += `<br>Win rate: ${element.winPercent}%`; htmlContent += `</body></html>`; // 写入文件,默认直接覆盖旧文件 fs.writeFile('./file.html', htmlContent, 'utf8', (err) => { if (err) console.error('写入失败:', err); }); found = true; } } // 启动时先执行一次,不用等第一个间隔 fetchAndWriteHtml(); // 启动定时任务 setInterval(fetchAndWriteHtml, INTERVAL);
修改完成后直接执行node file.js即可,脚本会一直后台运行定时更新HTML文件。
方案2:不改动原代码,使用系统定时工具
如果不想修改原JS代码,可以用系统自带的定时调度工具实现:
Linux/macOS 平台
- 间隔≥1分钟的场景用crontab:
执行crontab -e,新增一行配置(示例为每2分钟执行一次):*/2 * * * * cd /你的脚本所在绝对路径 && $(which node) file.js > file.html - 间隔<1分钟的场景用shell循环:
新建run.sh文件:
执行#!/bin/bash while true do node file.js > file.html sleep 30 # 这里填间隔秒数,示例为30秒 donechmod +x run.sh赋予权限,后台运行执行nohup ./run.sh &即可。
Windows 平台
- 间隔≥1分钟的场景用系统自带的「任务计划程序」,新建任务指定执行bat脚本即可,bat脚本内容:
@echo off cd /d 你的脚本所在路径 node file.js > file.html - 间隔<1分钟的场景用循环bat脚本:
双击运行即可。@echo off :loop node file.js > file.html timeout /t 30 /nobreak > nul goto loop
内容的提问来源于stack exchange,提问作者Alan Carlos Lopez
相关产品推荐
相关产品推荐

