node.js - 在目录上使用 fs.watch 似乎不会注意到添加的文件
问题描述
当我在目录上使用 fs.watch 时: https ://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener
在调用 fs.watch 后,它不会注意到添加到目录中的新文件。我在 Linux 上 - 我需要进行一些调用以通知新添加/删除的文件吗?
返回对象 FSWatcher 上的唯一事件是“更改”、“错误”和“关闭”——文件有“添加”或“删除”。
interface FSWatcher extends events.EventEmitter {
close(): void;
/**
* events.EventEmitter
* 1. change
* 2. error
*/
addListener(event: string, listener: (...args: any[]) => void): this;
addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
addListener(event: "error", listener: (error: Error) => void): this;
addListener(event: "close", listener: () => void): this;
on(event: string, listener: (...args: any[]) => void): this;
on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
on(event: "error", listener: (error: Error) => void): this;
on(event: "close", listener: () => void): this;
once(event: string, listener: (...args: any[]) => void): this;
once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
once(event: "error", listener: (error: Error) => void): this;
once(event: "close", listener: () => void): this;
prependListener(event: string, listener: (...args: any[]) => void): this;
prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
prependListener(event: "error", listener: (error: Error) => void): this;
prependListener(event: "close", listener: () => void): this;
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
prependOnceListener(event: "error", listener: (error: Error) => void): this;
prependOnceListener(event: "close", listener: () => void): this;
}
解决方案
没关系 - fs.watch 确实看到删除/添加/创建/未链接的文件。我的错误只是将文件路径传递给 fs.watch 而不是传递目录。最好只传递目录。要在 Linux 上完成类似于 fs.watch 的操作,您可以使用:
inotifywait -m /path/one -m /path/two -m /path/three -e create \
-e moved_to -e modify -e moved_from \
-e move -e create -e delete -e delete_self
推荐阅读
- javascript - 如何从玩笑测试中显示 Junit XML 中的错误?
- python - 在 Json 中通过 python 访问 kdb+/q 表?
- python - 将 TensorFlow 模型转换为 tensorflow-lite (.tflite) 格式时出现问题
- bash - 设置 cron-tab 以在 /var/log 中写入日志
- javascript - 更新可变刀片模板
- delphi - 带十进制值的 TProgressBar
- php - 如何从 Wordpress 管理员替换帖子和页面的所有外部/预览
- c# - 如何将 dd/mm/yyyy 转换为 M/d/yyyy
- angular - 当量角器无法找到元素时,获取 EADDRINUSE 连接 EADDRINUSE
- django - Django staic 和管理静态 css 文件已加载但未应用于页面