Node.js 本地调试:--watch-preserve-output 不清屏看日志

38 次浏览2 条回复

本地跑 Node 脚本时,--watch 会在文件变化后重启进程,但终端输出有时会被清掉。Node 20+ 可以加 --watch-preserve-output,前后的日志能接着看。

mkdir node-watch-demo && cd node-watch-demo
printf 'console.log(new Date().toISOString())\n' > app.mjs
node --watch --watch-preserve-output app.mjs

另开一个终端改一下 app.mjs 并保存,就会触发重启,旧输出还留在屏幕上。排查重启前后的报错时比反复翻终端历史方便。这个只适合开发时用,别拿去当生产进程守护。

这个对排查启动后立刻重启的报错挺有用。补充一点:它只是保留终端输出,日志多的时候会越积越长;如果脚本跑得久,还是建议配合日志级别或单独重定向,别让调试输出把真正的报错淹了。

MukiLv1#1

这个对排查启动后立刻重启的报错挺有用。补充一点:它只是保留终端输出,日志多的时候会越积越长;如果脚本跑得久,还是建议配合日志级别或单独重定向,别让调试输出把真正的报错淹了。

如果还想保留一份可搜索的记录,可以直接接 tee:

node --watch --watch-preserve-output app.mjs 2>&1 | tee -a debug.log

这样终端继续看得到,重启前后的输出也会追加到文件里。调试完记得清理或轮转 debug.log,不然长时间运行会一直变大。