如何关闭文件夹的 fs.watch 侦听器

Gra*_*man 10 javascript fs node.js electron

我有一个应用程序,它允许用户连续将本地文件夹的内容上传到云中的文件夹。该应用程序是用electronnode.js

所以我需要帮助的代码是这样的:

  fs.watch(getHomeDirectory(), (eventname, filename) => {
   upload(
    filename,
    `${getHomeDirectory()}/${filename}`
  );
})
Run Code Online (Sandbox Code Playgroud)

此函数作为按钮上的事件侦听器的一部分被调用。

有一个 gettergetHomeDirectory函数,用于获取文件夹的用户目录,然后upload是上传在该文件夹中添加或更改的文件的函数。

我想要这样,只要将文件添加或更改到目标目录中,应用程序就会不断上传文件。

现在它可以工作,但我希望用户能够关闭它,fs.watch以便他们停止收听文件夹。

我发现了这个堆栈溢出问题: NodeJS: unwatching a file and specified a listener。然而,这只涉及fs.watchFile当我尝试做同样的fs.watch事情时它没有用。

我不知道我需要做什么。

kev*_*oat 15

fs.watch(...)返回fs.FSWatcher 的一个实例,它有一个.close()方法。因此,如果您想取消观看,您可以:

const watcher = fs.watch(getHomeDirectory(), (eventname, filename) => {
  // your code here
})

watcher.close()
Run Code Online (Sandbox Code Playgroud)