求助:使用Watchman监听test2.js变更自动执行node命令失败
问题翻译
我尝试使用Facebook开源的Watchman工具,想要实现当前路径下的test2.js文件被修改时,自动重新执行node test2.js命令。我执行了如下命令:
watchman -- trigger . jsfiles '**/*.js' -- node test2.js
得到的返回结果是:
{ "version": "2024.05.06.00", "disposition": "created", "triggerid": "jsfiles" }
但文件变更时命令并未自动运行,请问我哪里操作错了,该如何配置?
问题排查与修正步骤
先确认目录已被Watchman监控
虽然trigger命令通常会自动添加目录监控,但手动初始化能避免异常:watchman watch .缩小路径匹配范围,精准监听目标文件
你用的'**/*.js'会匹配所有子目录下的JS文件,可能因匹配逻辑或路径优先级问题没触发到test2.js。直接指定目标文件更可靠:# 先删除旧的trigger watchman -- trigger-del . jsfiles # 创建新的trigger,仅监听当前目录的test2.js watchman -- trigger . jsfiles test2.js -- node ./test2.js检查trigger是否正确创建
执行以下命令查看已有的trigger列表,确认规则和命令配置无误:watchman trigger-list .正常输出应包含
jsfiles条目,其中expression为test2.js,command为node ./test2.js。查看Watchman日志排查执行错误
如果仍未触发,通过日志定位具体问题:watchman log日志会显示命令执行失败的原因,比如权限不足、Node路径未找到、文件路径解析错误等。
确保命令执行的工作目录正确
Watchman执行trigger命令时默认在被监控的目录下,但明确指定文件路径./test2.js可以避免路径解析歧义。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

